分析&回答
Java中存在四种引用机制,分别是强引用,软引用,弱引用,虚引用
强引用
我们用new方式创建的引用就是强引用。
Client client = new Client()
只要一对象有强引用,垃圾回收机制不会回收
软引用
SoftReference实例来保存一个对象的软引用。
SoftReference aSoftRef=new SoftReference(aRef);
在内存不够用时,会优先回收只有软引用的内存空间,主要是做缓存用。
弱引用
只要是触发垃圾回收机制进行回收,只具有弱引用的对象就会被回收
- tomcat中就是使用的弱应用
- ThreadLocal也是使用弱应用
如:weakhashmap
虚引用
主要是管理堆外内存的,主要是给写jvm的使用
主要检测队列配合使用,虚引用API无法get到值,主要是通知对象已经被回收,去清理堆外的内存
反思&扩展
四种引用比较
引用类型 | 被垃圾回收时间 | 用途 | 生存时间 |
---|---|---|---|
强引用 | 从来不会 | 对象的一般状态 | JVM停止运行时终止 |
软引用 | 当内存不足时 | 对象缓存 | 内存不足时终止 |
弱引用 | 正常垃圾回收时 | 对象缓存 | 垃圾回收后终止 |
虚引用 | 正常垃圾回收时 | 跟踪对象的垃圾回收 | 垃圾回收后终止 |
喵呜面试助手: 一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!