强软弱虚

1.NormalReference ,正常的引用就是强引用,一个对象只要有强引用指向它,就一定不会被GC回收,内存不足会OOM。

2.SorfReference,软引用指向的对象,正常GC不会回收,只有内存不够时启动的GC(FULL GC)才会回收软引用对象。用途:缓存。

3.WeakReference ,只要GC遇到被只被弱引用指向的对象,就会回收这个对象。用途:容器,防止内存泄漏。如WeakHashMap,ThreadLocal.threadLocalMap等。

4.PhantomReference,虚引用不管有没有指向对象,都无法获得它指向的对象,get()返回的结果都是null。当GC遇到它时,就会把它用放入队列里(构造方法的第二个参数),我们监测队列长度的变换可以知道虚引用的回收情况,然后进行特定操作。用途:管理堆外内存(不被jvm管理的内存),如:NIO中的DirectByteBuffer(直接内存),指向的就是jvm外的系统内存,GC无法回收堆外内存。所以可以使用虚引用,监测虚引用回收队列,清理堆外内存---使用Unsave类或者c++本地代码。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容