SoftReference是可怜的人Cache。JVM可以使这些引用存活更长时间,但不必如此。一旦没有硬引用,JVM便可以垃圾回收软引用的对象。您所遇到的JVM的行为是正确的,因为JVM不必长时间保持此类对象。当然,大多数JVM都会尝试在一定程度上保持软引用对象的生命。
因此,SoftReferences是一种危险的缓存。如果您确实要确保缓存行为,则需要一个真正的缓存。就像LRU缓存一样。特别是如果缓存对性能至关重要,则应使用适当的缓存。

SoftReference是可怜的人Cache。JVM可以使这些引用存活更长时间,但不必如此。一旦没有硬引用,JVM便可以垃圾回收软引用的对象。您所遇到的JVM的行为是正确的,因为JVM不必长时间保持此类对象。当然,大多数JVM都会尝试在一定程度上保持软引用对象的生命。
因此,SoftReferences是一种危险的缓存。如果您确实要确保缓存行为,则需要一个真正的缓存。就像LRU缓存一样。特别是如果缓存对性能至关重要,则应使用适当的缓存。