美文网首页java jvm
jvm 《三A》刷新软引用对象的原因是什么?

jvm 《三A》刷新软引用对象的原因是什么?

作者: a_Ygygs_Dxdsr_X | 来源:发表于2019-02-18 15:46 被阅读0次

    从1.3.1开始,可轻松访问的对象在最后一次引用后将保持活动一段时间。默认值是堆中每个可用兆字节的生命周期的一秒。可以使用-XX:SoftRefLRUPolicyMSPerMB标志调整此值 ,该标志接受表示毫秒的整数值。例如,要将值从一秒更改为2.5秒,请使用此标志:

    -XX:SoftRefLRUPolicyMSPerMB = 2500

    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在发现它们时清除了软引用。

    当我定期打开-verbose:gc时,我得到了很多完整的GC,我已经调整了堆,它没有任何区别,发生了什么?

    如果您正在使用RMI,那么您可能会遇到分布式GC。此外,一些应用程序正在添加显式GC认为它将使其应用程序更快。幸运的是,您可以使用1.3及更高版本中的命令行选项禁用此功能。试着 -XX:+DisableExplicitGC 随着  -verbose:gc,看看是否有所帮助。

    ---------------------

    作者:a_Ygygs_Dxdsr_XdMss

    来源:CSDN

    原文:https://blog.csdn.net/weixin_42749765/article/details/87450776

    版权声明:本文为博主原创文章,转载请附上博文链接!

    相关文章

      网友评论

        本文标题:jvm 《三A》刷新软引用对象的原因是什么?

        本文链接:https://www.haomeiwen.com/subject/rknaeqtx.html