从1.3.1开始,可轻松访问的对象在最后一次引用后将保持活动一段时间。默认值是堆中每个可用兆字节的生命周期的一秒。可以使用
-XX:SoftRefLRUPolicyMSPerMB
标志调整此值 ,该标志接受表示毫秒的整数值。例如,要将值从一秒更改为2.5秒,请使用此标志:
|
Java HotSpot Server VM使用最大可能的堆大小(使用
-Xmx
选项设置 )来计算剩余的可用空间。
Java Hotspot Client VM使用当前堆大小来计算可用空间。
这意味着服务器VM的一般趋势是增加堆而不是刷新软引用,
-Xmx
因此对软引用何时进行垃圾回收具有显着影响。
另一方面,客户端VM将更倾向于刷新软引用而不是增加堆。
上述行为适用于1.3.1到Java SE6版本的Java HotSpot VM。但是,此行为不是VM规范的一部分,并且在将来的版本中可能会发生更改。同样,
-XX:SoftRefLRUPolicyMSPerMB
不保证在任何给定版本中都存在该 标志。
在1.3.1版之前,Java HotSpot VM在发现它们时清除了软引用。