Java垃圾收集器G1GC需要很长时间进行“对象复制”(撤离暂停)

Java垃圾收集器G1GC需要很长时间进行“对象复制”(撤离暂停),第1张

Java垃圾收集器G1GC需要很长时间进行“对象复制”(撤离暂停

为什么GCG1仍然为此做一个“停止世界”?

因为G1并不是一个 无休止的 收集器,所以它只是一个 低暂停时间的 收集器。

我还认为-XX:MaxGCPauseMillis的默认值为200毫秒,为什么这个值违反29甚至50的倍数(请参见下文)?

是的,但这只是一个目标,而不是保证。许多事情可能导致它无法实现该目标。您有相当大的堆,这使事情变得更加困难,即失败更容易引起。

无论如何,GC调整过程始于通过以下方式启用详细的GC日志记录:

-Xloggc:<path to gc log file>-XX:+PrintAdaptiveSizePolicy-XX:+PrintGCDateStamps-XX:+PrintGCTimeStamps-XX:+PrintGCDetails

然后通过GCViewer运行生成的日志以获取总体概述,然后返回阅读单个日志条目(有关此主题的答案/博客文章很多),以找出可能导致最坏行为的原因。根据原因,可以尝试各种补救措施。

为了避免货物堆放,对跟踪垃圾收集器的总体工作方式和G1的工作应有一些一般性的了解。

我的应用程序有许多分配,可以很容易地称为“巨大分配”。

如果这确实是原因,那么当前的VM具有一些实验性选项可以更快地回收它们。

 [Object Copy (ms): Min: 6964.1, Avg: 6973.0, Max: 6989.5, Diff: 25.3,

Sum: 69730.4]
[Times: user=0.55 sys=46.58, real=7.02 secs]


这意味着在执行大部分应由内存访问而非系统调用组成的 *** 作时,它将花费大部分时间在内核中。因此,交换活动或透明的大页面很可能是可疑的。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5560730.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存