[jvm] -- 引用篇
-
四种引用及其应用场景
- 强引用
- 强引用是平常中使用最多的引用,强引用在程序内存不足(OOM)的时候也不会被回收。
- 使用场景:啥时候都在使用
- 软引用
- 软引用在程序内存不足时,会被回收。
- 使用场景:创建缓存的时候,创建的对象放进缓存中,当内存不足时,JVM就会回收早先创建的对象。适用构建敏感数据的缓存。
- 弱引用
- 一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。
- 使用场景:Java源码中的
java.util.WeakHashMap
中的key就是使用弱引用,避免内存的消耗。
- 虚引用
- 虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。程序可以通过判断引用队列中是否已经加入了虚引用,来了解被引用的对象是否将要被垃圾回收。
- 使用场景:虚引用主要用来跟踪对象被垃圾回收器回收的活动。
明明可以靠才华吃饭,非要靠脸~