【问题标题】:Minor GC but Eden space is not fullMinor GC 但 Eden 空间未满
【发布时间】:2015-05-15 08:26:10
【问题描述】:

Minor GC 是用来清理 Eden 空间的,对吧? 但我使用 jstat 来查看我的 GC 日志。 当 Eden 空间已满 90% 时,会发生 95% 的次要 GC。 但是有时我发现伊甸园空间几乎是空的。

我使用 jdk7 和 g1gc。我的程序每秒处理五万个请求。 GC 引起的每一个短暂的暂停都会很明显。

GC 会出于什么其他原因决定执行次要收集?

【问题讨论】:

  • stackoverflow 是一个关于编程而非系统管理的社区
  • @specializt 我不会将 Java VM 的内部工作视为系统管理。
  • 要回答这个问题,我们至少需要知道您使用的是什么 Java 版本和哪个收集器。
  • 那是准确地 系统管理员 - 开发人员无论如何都不能关心垃圾收集,如果你需要关心它,你的软件很可能......设计有问题。
  • @specializt Developers must not care about garbage collection whatsoever?这是一个有趣的建议,我想知道您如何在不知道垃圾收集如何工作的情况下编写高性能代码。 (顺便说一句,个人建议:如果我是你,我会淡化我的帖子的好斗性。这并不会让你觉得你很有帮助。)

标签: java garbage-collection


【解决方案1】:

Jstat 向您显示抽样数据。例如,如果您运行jstat -gc <pid> 2s,jstat 会每两秒向您显示堆和 gc 状态的快照。

因此,当收集发生时,eden 很可能处于 100%,但您在 jstat 中看到的快照是在收集发生后的一段时间内拍摄的。

还有其他解释,例如 G1 收集器在 100% 满之前收集伊甸园。当 eden 似乎未满时,分配一个巨大的对象也可能触发 gc。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    相关资源
    最近更新 更多