这几种引用 主要用于垃圾回收内存优化使用:
根可达强引用,不能被垃圾回收器回收。
根可达软引用,当内存分配不足时,会被垃圾回收器回收。--可用于缓存类应用。
根可达弱引用,不管内存足不足时,只要垃圾回收器执行就会回收掉弱引用对象。--一次性访问的情况下可以使用,回收时调用fianlize方法。
根可达虚引用,不能通过m.get的方式访问到对象内容,垃圾回收器质性随时都可以回收掉虚引用。--可用于堆外内存(直接内存)管理
说明:jvm虚拟机 有专门的线程用于管理虚引用处理堆外内存。当虚引用对象被回收后,对应的堆外内存对象调用c++的处理方式回收内存。
强引用,软引用,弱引用 对象 都可以通过对象m.get的方法拿到对象内容,而虚引用无法通过m.get的方法拿到对象内容。
原文:https://www.cnblogs.com/huacheng/p/13287828.html