WeakReference和SoftReference总结
?
? ?今天查一个ClassLoader卸载问题,涉及到SoftReference和WeakReference,之前只知道大概的区别,没有什么总结,今天抽时间总结一下。
?
- WeakReference
- 触发回收条件引用的对象不再被其他对象引用回收方式系统GC即可使用场景适用于做这种缓存:缓存的key一旦失去了其他的引用,缓存里的东西就可以随时消失。
?
- SoftReference
?
- 触发回收的条件引用对象不再被其他对象引用JVM Heap内存不足 || 超过一定时间,没被使用(get)(这个时间和JVM的空闲内存空间以及设置的
XX:SoftRefLRUPolicyMSPerMB?有关系)回收方式先清空SoftReference引用对象下一轮GC时回收使用场景适用于做这种缓存:只要内存足够,就可以尽可能的存活,即使它的key已经没有其他对象的引用。参考文档:http://www.oracle.com/technetwork/java/hotspotfaq-138619.html