首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

什么是强引用、软引用、弱引用、虚引用

什么是强引用、软引用、弱引用、虚引用? 强引用(StrongReference):一般指的是对像被new出来,强引用一般不会被jvm收回,但会报OutOfMemory(内存不足)。...Object obj = new Object(); 软引用(SoftReference):软引用相对来说弱于强引用,当内存足够的时候不会被GC回收,但内存不足时,再试图回收软引用,通过软引用可以做临时缓存...(PhantomReference):这个引用也有人叫幻引用,也很明显,引用一个不存在,随时会被干掉,算是所有引用中最容易被干掉的。...引用类型 GC策略 简介 强引用(StrongReference) 永远不会回收(GC ROOT可引用到的前提下) 最基本的引用Object obj=new Object() 软引用(SoftReference...4种引用强度从高到低:强引用 -> 软引用 -> 弱引用 -> 虚引用 最后 不管哪种引用,在开发过程中,都是尽量减少强引用,毕竟内存有限,虽然说放到内存可以提升用户访问效率,但是这也是一把双刃剑,

1.7K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python引用还不懂?!!

    星球球友提问: 请问下,import父目录的是应该用怎样的方式,查询了许多资料也失败了,求解答 ?...图1 报错的意思很明显,找不到引用的模块。检查来检查去,引用的相对路径是对的呀,可是为什么找不到settings这个文件呢。...其实引用并没有错,错在执行的路径上,如果执行时所在的路径是test.py的目录下,那么执行是可以成功的,但是如果不在这个路径下,就会找不到setting这个模块。 这是为什么呢?...表示引用当前目录的上一层目录,请注意这个当前目录的意思,当前目录是指你执行python test.py这个命令时所在的目录,比如你如果在app这个目录下执行,那当前目录就为app这个目录,此时import...__file__是当前文件的相对路径的文件名 os.path.dirname('文件名/文件夹名') # 获取文件/文件夹所在的目录 知道了上面的用法,我们稍加修改,编程图2的样子,再来运行,不管你在什么路径下执行

    97040

    引用、软引用、弱引用、幻象引用什么区别?

    今天我要问你的问题是,强引用、软引用、弱引用、幻象引用什么区别?具体使用场景是什么?典型回答不同的引用类型,主要体现的是对象不同的可达性(reachable)状态和对垃圾收集的影响。...强引用、软引用、弱引用、幻象引用什么区别?...这意味着,利用软引用和弱引用,我们可以将访问到的对象,重新指向强引用,也就是人为的改变了对象的可达性状态!这也是为什么我在上面图里有些地方画了双向箭头。...所以,对于软引用、弱引用之类,垃圾收集器可能会存在二次确认的问题,以保证处于弱引用状态的对象,没有改变为强引用。但是,你觉得这里有没有可能出现什么问题呢?...那么我们能不能使用什么方法来影响软引用的垃圾收集呢?答案是有的。软引用通常会在最后一次引用后,还能保持一段时间,默认值是根据堆剩余空间计算的(以M bytes为单位)。

    1K00

    引用,软引用,弱引用,幻象引用什么区别?

    引用,软引用,弱引用,幻象引用什么区别? 不同的引用类型,主要体现的是对象的不同的可达性(reachable)状态和对垃圾收集的影响。...软引用,是一种相对强引用弱化一些的引用,只有当 JVM 认为内存不足时,才会试图回收软引用指向的对象。...虚引用,形同虚设 ,虚引用不会决定对象的生命周期,如果一个对象仅持有虚引用,其实就和没有任何引用一样。在任何时候都可能被垃圾回收器回收。...虚引用和软引用的一个区别是,虚引用必须和引用队列(ReferenceQueue)联合使用。...Java中4种引用的级别和强度由高到低依次为:强引用 -> 软引用 -> 弱引用 -> 虚引用

    4.3K10

    引用、软引用、弱引用、虚引用什么区别?

    引用、软引用、弱引用、虚引用 · 语雀 (yuque.com) 自 JDK1.2 开始,Java 提供了 4 种引用关系,以表示引用和实例对象的关系。...强引用“一直存活着” 强引用,就是我们最常见的普通对象引用。 只要强引用还存在,垃圾收集器永远不会回收掉被引用的实例对象。...WeakReference weakO = new WeakReference(new Object()); 虚引用“随时可能被回收” 虚引用也称为“幽灵引用”或者“幻影引用”,虚引用是最弱的一种引用关系...程序如果发现某个虚引用已经被加入到引用队列,那么就可以在所引用的对象的内存被回收之前采取必要的行动,然后断开虚引用对象的引用,虚引用被回收或者不可达,虚引用指向的对象才会回收。...、软引用、弱引用、幻象引用什么区别?

    62040

    引用、软引用、弱引用、幻象引用什么区别?

    1 强引用 特点:我们平常典型编码Object obj = new Object()中的obj就是强引用。通过关键字new创建的对象所关联的引用就是强引用。...2 软引用 特点:软引用通过SoftReference类实现。 软引用的生命周期比强引用短一些。...软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用引用的对象被垃圾回收器回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。...3 弱引用引用通过WeakReference类实现。 弱引用的生命周期比软引用短。...弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。

    55300

    【JAVA】强引用、软引用、弱引用、幻象引用什么区别?

    本篇博文的重点是,强引用、软引用、弱引用、幻象引用什么区别?具体使用场景是什么? 概述 不同的引用类型,主要体现的是对象不同的可达性(reachable)状态和对垃圾收集的影响。...所以,对于软引用、弱引用之类,垃圾收集器可能会存在二次确认的问题,以保证处于弱引用状态的对象,没有改变为强引用。 但是,你觉得这里有没有可能出现什么问题呢?...那么我们能不能使用什么方法来影响软引用的垃圾收集呢? 答案是有的。软引用通常会在最后一次引用后,还能保持一段时间,默认值是根据堆剩余空间计算的(以 M bytes 为单位)。...为什么需要这种机制呢?...后记 以上就是 【JAVA】# 强引用、软引用、弱引用、幻象引用什么区别?

    22430

    详解python如何引用package

    python中引用的方法: python中引用可以使用“import 名”语句引用 示例:引入time import time 也可以用“from 名 import 类名”的方式引用 示例:...引入time.time类 from time import time 内容扩展: 什么是Python Package 如何区分你看到的目录是一个Python Package呢?...,顾名思义,就是其可以导入各类的,python的可以说是所有语言中最多的。...对于刚入门的python爱好者来说最初接触的应该是import直接导入的方式,例如 import time,就是导入了python的time,这个中的方法可以处理大部分我们项目中遇到的关于时间的问题...到此这篇关于详解python如何引用package的文章就介绍到这了,更多相关python中引用方法内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!

    74110

    Android mk 引用 jar 、so 库、aar ,系统签名

    假如我们想让我们生成的 apk 放到 system/priv-app 目录下,有什么方法呢?...我们可以直接这样指定,这样生成的 apk 就会放到 data/app 目录下 LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)/ ---- 引用第三方 jar ...引用一个 jar 比如,我们当前目录下的 libs 有 CommonUtil.jar jar ,我们想引用它,需要两个步骤 第一步, 声明我们 jar 所在的目录 LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES...引用我们声明 jar 的变量 引用我们上面声明的 CommonUtil LOCAL_STATIC_JAVA_LIBRARIES := CommonUtil 引用多个 jar 引用多个 jar 的方式其实跟引用...---- 引用 aar 第一步:先声明 aar 的位置 include $(CLEAR_VARS) LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES += inveno_meitu_ui_sdk

    2.9K20

    面试题18:什么是符号引用什么是直接引用

    在解析阶段会有一个步骤,将运行时常量池当中二进制数据当中的符号引用转化为直接引用的过程。 ---- 【符号引用】 以一组符号来描述所引用的目标。...符号引用可以是任何形式的字面量,只要使用时能无歧义地定位到目标即可,符号引用和虚拟机的布局无关。 为什么要有符号引用?...在编译的时候每个java类都会被编译成一个class文件,但在编译的时候虚拟机并不知道所引用类的地址,所以就用符号引用来代替,而在解析阶段就是为了把这个符号引用转化成为真正的地址的阶段。...---- 【直接引用】 直接引用和虚拟机的布局是相关的,不同的虚拟机对于相同的符号引用所翻译出来的直接引用一般是不同的。 如果有了直接引用,那么直接引用的目标一定被加载到了内存中。...---- 【示例】 创建一个Student.java类 执行javap -verbose Student.class 红框中就是我们上面陈述的符号引用

    75010

    python关于多级之间的引用问题

    首先得明确和模块。 :在一个目录下存在__init__.py,那么该目录就是一个。 模块:一个.py文件就是一个模块。....模块 import 函数 另一种是from . import 模块,并通过 模块.函数 来使用相关的函数。...这里是package_a中tmp2模块下的test_aTmp2函数 这里是package_b中tmp4模块下的test_bTmp4函数 这里是package_a中a_uitls中的aUtils模块下的...a_uitls中的aUtils模块下的test_aUitls函数 这里是package_b中b_uitls中的bUtils模块下的test_buitls函数 但是这时我们去重新运行tmp4.py,...ModuleNotFoundError: No module named '__main__.tmp3'; '__main__' is not a package 这里.表示的是__main__,我暂时也不清楚这时是什么意思

    76940

    系统jar,sdk的制作及引用

    所以需要我编译一个包含新接口方法的jar交给APK编译。(生成jar的方法见该文章) 编译Jar 其实编译系统jar很简单 make framework 即可得到framework.jar。...这时候把jar导入到项目里,发现缺找不到jar里的方法。这是因为,Android N使用了Jack编译。所以编出来的jar里面没有class文件,取而代之的是一个优化过的dex文件。...class文件的jar。...引用列表里找到libs/classes.jar,右侧scope选择compileOnly即可。...SDK制作 前面的方法,虽然可以让App访问系统自定义的API,但是,有些APP做了很多的外部库引用,我们的jar因为包含很多系统方法,会导致正常的类引用出现奇怪的错误。

    4.9K30
    领券