gpt4 book ai didi

java - Soft Reference中GC在java中的作用

转载 作者:行者123 更新时间:2023-12-01 17:50:55 31 4
gpt4 key购买 nike

最近我看到这篇文章,它对 Jenkins 进行 GC 调优,其中讨论了这个参数:-XX:SoftRefLRUPolicyMSPerMB

https://jenkins.io/blog/2016/11/21/gc-tuning/

我知道它可以防止 OOM 错误,因为它在达到阈值时会清除软引用对象。

1) 这个阈值(在 -XX:SoftRefLRUPolicyMSPerMB 中默认 = 1000ms)是什么意思?这个值代表什么?

2) 我的 jenkins 似乎有 80% 的软引用(使用 HProf 观察到)

3) 正如上面文章中所建议的,如果我将这个 -XX:SoftRefLRUPolicyMSPerMB 标志减少到 10ms 会产生什么后果?

注意:我们使用 G1GC

谢谢,
哈利

最佳答案

1) From Oracle :

Starting with 1.3.1, softly reachable objects will remain alive for some amount of time after the last time they were referenced. The default value is one second of lifetime per free megabyte in the heap. This value can be adjusted using the -XX:SoftRefLRUPolicyMSPerMB flag, which accepts integer values representing milliseconds. For example, to change the value from one second to 2.5 seconds, use this flag:

-XX:SoftRefLRUPolicyMSPerMB=2500

3)我的意思是,它在您链接的文章中具体说明了。您可能会通过牺牲一些性能来释放堆空间。我们还能告诉你什么?

If Jenkins consumes excessive old generation memory, it may help to make soft references easier to flush by reducing -XX:SoftRefLRUPolicyMSPerMB from its default (1000) to something smaller (say 10-200). The catch is that SoftReferences are often used for objects that are relatively expensive to load, such lazy-loaded build records and pipeline FlowNode data

关于java - Soft Reference中GC在java中的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50288346/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com