还有很多中引用 这只介绍4种引用
强引用:
简单的说就是 new 了一个对象 被引用链(GC Roots) 引用的对象是不会被垃圾回收掉的
比如: Object obj = new Object(); 这就是强引用
软引用:
没有被GC Roots 所引用就会被垃圾回收。
当系统内存不足时就会回收掉。
如果内存足够那么垃圾回收线程是不会回收掉软引用的。
只要是内存不足就会回收软引用前提是没有被GC Roots 给引用。
弱引用:
这个跟软引用大同小异
当系统内存不足还是内存够用,不论如何都会被垃圾回收
前提是没有被引用链 (GC Roots )
虚引用:
当内存回收时,jvm会讲虚引用加入到引用队列中RefQueue中 然后可以通过使用引用队列(RefQueue)来获取已经被回收的对象 从而减少了系统的压力
当被虚引用调用的对象被垃圾回收掉时 虚引用就会进入引用队列调用unsafe对象来调用feelmemory方法来释放直接内存 从而减少了很大的压力