👌软引用和虚引用适用场景
题目详细答案
软引用
软引用主要用于实现内存敏感的缓存。
软引用可以用于缓存那些可以在内存不足时安全回收的对象。例如,图片缓存、数据缓存等场景。在内存充足时,缓存的对象不会被回收;当内存不足时,缓存的对象会被回收以释放内存。这种机制可以在不影响应用程序功能的前提下,最大限度地利用可用内存。
1 | import java.lang.ref.SoftReference; |
SoftReferenceCache使用软引用来缓存对象,当内存不足时,缓存的对象可能会被回收。
虚引用
虚引用主要用于跟踪对象被垃圾收集器回收的时间,通常用于实现特殊的清理机制。
虚引用可以用于管理那些需要在对象被回收后进行清理的资源,例如直接内存(Direct Memory)、文件句柄等。
当对象被垃圾收集器回收时,虚引用会被放入引用队列(ReferenceQueue),通过处理这个队列,可以执行必要的清理操作。
虚引用可以用于监控对象何时被回收,从而在对象回收时执行一些特定的操作,例如记录日志、更新状态等。
1 | import java.lang.ref.PhantomReference; |
当obj被垃圾收集器回收时,phantomRef会被放入refQueue中,可以通过检查refQueue来执行清理操作。