强引用是最常见的引用关系。当一个对象被强引用关联时,垃圾回收器不会回收它,即使系统内存空间不足,JVM宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的存活对象来解决内存不足问题。例如: Object obj = new Object(); // 强引用 只要强引用还存在,垃圾回收器就无法回收被引用的对象。
WeakReference<String> weakReference =newWeakReference<>(str);//弱引用转强引用String strongReference = weakReference.get(); 同样,弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用所引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。 简单测试: GCTarget.java publicclassG...
SoftReference 的特点是它的一个实例保存对一个 Java 对象的软引用,该软引用的存在不妨碍垃圾收集线程对该 Java 对象的回收。也就是说,一旦 SoftReference 保存了对一个 Java 对象的软引用后,在垃圾线程对这个 Java 对象回收前,SoftReference 类所提供的 get () 方法返回 Java 对象的强引用。另外,一旦垃圾线程...
PhantomReference<Object>phantomRef=newPhantomReference<>(newObject(),newReferenceQueue<>());// 虚引用 在这个例子中,phantomRef是一个虚引用。可以通过ReferenceQueue来监控对象的回收,但无法直接访问被引用的对象。 总结 在Java 中,理解这四种引用类型是内存管理的关键。强引用是最常见的引用方式,弱引用和软引用则...
从JDK 1.2版本开始,对象的引用被划分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。 正文 强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: ...
在Java 中,引用是一种指向对象的引用类型。不同类型的引用在垃圾回收机制中的行为各不相同,影响对象的生命周期和内存管理。以下是 Java 中的四种引用类型:强引用、弱引用、软引用和虚引用。 1. 强引用(Strong Reference) 强引用是最常见的引用类型。在代码中,任何一个对象的引用都是强引用,只要强引用还存在,垃圾...
Java,引用,强引用,弱引用,软引用,虚引用, 强引用 平时写代码的时候,大部分都是使用强引用,声明了一个对象,并且在内存中开辟出相对应的空间。如果一个对象有强引用,虚拟机是不会回收这个对象的,即使在内存不够的情况下,虚拟机宁愿抛出 OutOfMemory 也不会擅自回收有强引用的对象。这个机制是合理的。
从版本开始,对象的引用被划分为种级别,从而使程序能更加灵活地控制对象的生命周期。这种级别由高到低依次为:强引用、软引用、弱引用和虚引用。 正文 1. 强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: ...
JDK1.2以后引用被分为四类:强引用、软引用、弱引用、虚引用。这样分类是为了更加灵活的控制对象的生命周期。一、强引用 强引用是最普通的引用类型,日常开发中使用的引用类型默认都是强引用类型,强引用的对象只要引用还存在,GC就不会回收这个对象。JVM不会回收存在引用的强引用类型对象来解决内存不足的问题。如下...
简介:引用方式内存不足时垃圾回收机制启动时其余情况强引用否否否软引用是否否弱引用是是否虚引用可能可能可能在一般的程序中,弱引用和虚引用很少会被用到,强引用天天都在用就不必我说了,在有些情况下(如资源文件很大,但并不是全部要在同一时刻使用)我们会使用软引用来代替原来的强引用,一是可以避免某些情况下产生...