#弱引用与虚引用使用总结
1)内存泄漏监控
有线程栈指向的强引用断开后(count计数减为0了表示断开了),此时要马上切断与堆中实例关联的虚引用,当gc回收堆中实例后,就不会往引用队列中添加虚引用了,此时就表示内存释放成功,而没有泄露;
2) 堆外内存回收
虚引用关联了一个DirectByteBuffer实例,当该实例的强引用断开后,gc会回收该实例,并且将虚引用放入引用队列,后台线程检测到会执行clean方法,释放堆外内存;
3)threadLocalMap中entry中用若引用与key关联
此时key的另一头强引用断开后,gc就可以直接回收了,此时entry中拿到的key为null,即表示元素已被回收,这边就可以处理value和entry了;