强引用是最常见的引用关系。当一个对象被强引用关联时,垃圾回收器不会回收它,即使系统内存空间不足,JVM宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的存活对象来解决内存不足问题。例如: Object obj = new Object(); // 强引用 只要强引用还存在,垃圾回收器就无法回收被引用的对象。
在实际程序设计中一般很少使用弱引用与虚引用,使用软引用的情况较多,这是因为软引用可以加速 JVM 对垃圾内存的回收速度,可以维护系统的运行安全,防止内存溢出(OutOfMemory)等问题的产生 利用软引用和弱引用解决 OOM 问题:假如有一个应用需要读取大量的本地图片,如果每次读取图片都从硬盘读取,则会严重影响性能,但是如果...
System.out.println("内存不够:软引用引用的对象:"+sf.get()); } } 结果: 软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收器回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。 弱引用 弱引用需要用java.lang.WeakReference类来实现,它比软引用的生存期更短。
虚引用时指被PhantomReference类实现的引用,无法通过虚引用来获取到一个对象实例。它被用来跟踪对象引用被加入到队列的时刻。所以它的使用是需要和队列一起使用的。其实上述的软引用和弱引用也是可以搭配队列使用的。但是虚引用必须搭配队列使用。 package cn.yishijie.jol; import cn.yishijie.config.Person; import ja...
JDK1.2以后引用被分为四类:强引用、软引用、弱引用、虚引用。这样分类是为了更加灵活的控制对象的生命周期。一、强引用 强引用是最普通的引用类型,日常开发中使用的引用类型默认都是强引用类型,强引用的对象只要引用还存在,GC就不会回收这个对象。JVM不会回收存在引用的强引用类型对象来解决内存不足的问题。如下...
简介:引用方式内存不足时垃圾回收机制启动时其余情况强引用否否否软引用是否否弱引用是是否虚引用可能可能可能在一般的程序中,弱引用和虚引用很少会被用到,强引用天天都在用就不必我说了,在有些情况下(如资源文件很大,但并不是全部要在同一时刻使用)我们会使用软引用来代替原来的强引用,一是可以避免某些情况下产生...
从JDK 1.2版本开始,对象的引用被划分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。 正文 (一) 强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: ...
java对象的四种引⽤:强引⽤、软引⽤、弱引⽤和虚引⽤ 在JDK1.2之前,创建的对象只有在处于可触及(reachable)的状态下,才能被程序使⽤。也就是说,若⼀个对象不被任何变量引⽤,那么程序就⽆法再使⽤这个对象。垃圾回收器⼀旦发现这些⽆⽤对象,就会对其进⾏回收。但是,在某些情况下...
强引用:是指创建一个对象并把这个对象赋给一个引用变量。软引用:如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃...
引用 强引用(默认支持类型) 软引用 弱引用 虚引用 强引用(默认支持模式) 我们平常普通写的 Object a=new object(); 创建对象就是一种强引用 当内存不足,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收 强引用是我们最常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还...