我读了这篇文章,现在我很清楚弱引用和软引用之间的基本区别是什么。我也明白,与弱引用不同(如果没有对该对象的强引用,这将导致在下一个 GC 周期中收集该对象),软引用会保留在内存中,直到 JVM 内存不足。
但是我的问题是如果 JVM 内存不足并且垃圾收集器也开始收集软引用,它应该在逻辑上收集所有具有软引用的现有对象(我的猜测)。我是对的吗?
我想到的另一件事是软引用有一个很好的用例,那就是内存缓存。但是如果我拥有的所有软引用都将被 GC 一次性清除,那么这可能不是我们一直想要的。
有没有办法控制将被清除的软引用的百分比?或者我们可以告诉 GC 在它恢复了一定数量的内存后停止清除软引用吗?
我问这个是为了更好地掌握如何有效地使用软引用,显然没有人会希望他们的缓存从内存中完全清除,即使您需要非常少量的内存。
元芳怎么了
相关分类