Java中强软弱虚四种引用
一:引用的目的:
在Java中垃圾回收器的运行是JVM操作的,但是我们仍然可以在一定程度上与垃圾回收器进行交互,其目的在于更好的帮助垃圾回收器管理好应用的内存,避免内存出现OOM这种交互方式就是使用JDK 1.2引入的java.lang.ref包,为对象指定不同的引用类型。
Object obj = new Object() obj指向的是Object()对象在内存中的地址。可以通过obj可以操控对象一些操作。
一、强引用(StrongReference)
当我们使用 new 这个关键字创建对象时创建出来的对象就是强引用(new出来对象为强引用) 如Object obj = new Object() 这个obj就是一个强引用了,如果一个对象具有强引用。垃圾回收器就不会回收有强引用的对象。如当jvm内存不足时,具备强引用的对象,虚拟机宁可会抛出OutOfMemoryError(内存空间不足),使程序终止,也不会靠垃圾回收器去回收该对象来解决内存。
二、软引用(SoftReference)
如果一个对象只具有软引用,那就类似于可有可物的生活用品。如果内存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。
软引用的作用:软引用可用来实现内存敏感的高速缓存。
软引用可以和一个引用队列(ReferenceQueue)联合使用,如果软引用所引用的对象被垃圾回收,Java虚拟机就会把这个软引用加入到与之关联的引用队列中。
三、弱引用(WeakReference)
如果一个对象只具有弱引用,那就类似于可有可物的生活用品。弱引用与软引用的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程, 因此不一定会很快发现那些只具有弱引用的对象。
弱引用可以和一个引用队列(ReferenceQueue)联合使用,如果弱引用所引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。
-
Java中四种引用强 软 弱 虚 的详细介绍及理解
Java中强软弱虚四种引用 引用: 一、强引用(StrongReference) 当我们使用 new 这个关键字创建对象时创建出来的对象就是强引用(new出来对象为强引用) 如O...
-
Java中的引用:强软弱虚
前言 之前在研究MVP的时候接触过弱引用,用来避免由于Activity被回收导致的内存泄露,但是当时只是浅尝辄止,没有系统的去接触引用这一块,没想到最近在看ThreadLocal的时候又看到关于引用的...
-
Java中强软弱虚四种引用
Java中强软弱虚四种引用 1.强引用 本章前文介绍的引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空间不足,...
-
也来谈谈Android内存的强软弱虚引用
下面来谈谈java里面的几个引用 首先要明确为什么要出现几个不同的引用,这是因为为了更好得管理分配java内存,避免内存出现OOM,更好地让JVM虚拟机回收资源,为分配的对象指定不同的引用类...
-
Java四种对象引用类型:强软弱虚
Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary...
-
Java的四种引用,强弱软虚,用到的场景
http://droidyue.com/blog/2014/10/12/understanding-weakreference-in-java/ java中的4种reference的差别...
-
Android的强软弱虚引用的基本了解1
出处:http://blog.csdn.net/mr_liabill/article/details/48344483 来自《LiaBin的博客》 出处:http://zhangjunhd.bl...