而应用数据类型根据生命周期的长短又分为:强引用、弱引用、软引用和需引用(幻象引用),我们平时基本上只用到强引用类型,而其他的引用类型我们也就在面试中,或者平日阅读类库或其他框架源码的时候才能见到。 1.强引用 用到的new了一个对象就是强引用,例如 Object obj = new Object(); 当JVM的内存空间不足时,宁愿...
WeakReference对象的生命周期基本由垃圾回收器决定,一旦垃圾回收线程发现了弱引用对象,在下一次GC过程中就会对其进行回收。 虚引用:对生存时间无影响,在垃圾回收时得到通知。 虚引用顾名思义,就是形同虚设。与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一...
强引用 相当于 Object obj=new Object()这种引用就是强引用,即使OOM也不会被垃圾回收器进行回收 软引用 如果将要发生了OOM(内存不够用了)则会将对象自动回收 弱引用 只要发生了gc()就会进行回收虚引用的对象 虚引用 主要用来跟踪对象被垃圾回收的活动。虚引用必须和引用队列关联使用。
强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: Object strongReference = new Object(); 软引用:引用但非必须的对象,内存溢出异常之前,回收。 软引用可以和一个引用队列(ReferenceQueue)联合使用。如果软引用所引用对象被垃圾回收,JAVA虚拟机就会把这个软引用加入到与之关联的引...
虚引用主要用来跟踪对象被垃圾回收器回收的活动。 虚引用与软引用和弱引用的一个区别在于: 虚引用必须和引用队列(ReferenceQueue)联合使用。当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。
强引用:new 出的对象之类的引用,只要强引用还在,永远不会回收。 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: Object strongReference=newObject(); 软引用:引用但非必须的对象,内存溢出异常之前,回收。 软引用可以和一个引用队列(ReferenceQueue)联合使用。如果软引用所引用...
1.强引⽤(Strong Reference)2.弱引⽤(WeakReference)3.软引⽤(SoftReference)4.虚引⽤(PhantomReference)强引⽤是我们在编程过程中使⽤的最简单的引⽤,如代码String s=”abc”中变量s就是字符串对象”abc”的⼀个强引⽤。任何被强引⽤指向的对象都不能被垃圾回收器回收,这些对象都是在程序中...
弱引用 只要发生了gc()就会进行回收虚引用的对象 虚引用 主要用来跟踪对象被垃圾回收的活动。虚引用必须和引用队列关联使用。 案例: import java.lang.ref.*; public class WeakReferenceDemo { public static void main(String[] args) { softReferenceTest();// 软引用 ...