【发布时间】:2014-09-12 01:10:52
【问题描述】:
我正在尝试在大型企业 Java 应用程序中进行垃圾收集。我有 GC 日志并开始使用各种工具查看它们 - 这里的屏幕截图是使用 GCViewer 完成的。 (遗憾的是没有日志包含更详细的 GC 信息...)
我还在阅读我们正在使用的 Java Hotspot VM 垃圾收集。
但我还是有点困惑:下面是 GC 图的放大部分截图。
这里发生了三件事:
- 蓝线有“小曲折”(您几乎看不到):据我了解,这些是 Young 空间中发生的 次要 gc 循环。
-
有一个黑条,是阻塞10s的full GC,在日志中可以看到:
1751585.394: [Full GC 1433326K->660045K(1552832K), 10.1157600 secs] - 然后是蓝线的“大曲折”(表现在左边的水滴中)。 这让我很困惑。
模式 #3 的日志没有将其标记为完全 GC,但看起来与其他类似...
1749795.648: [GC 1299871K(1552832K), 0.0402933 secs]
- 那么这也是次要 GC 吗?
- 如果是,为什么会同时发生两种不同模式的次要垃圾收集(#1 和 #3)?
- 或者在 Young 空间中的 Minor GC 和 Tenured 中的 Full GC 之间还有其他什么关系?
编辑。一些附加信息:
使用的 GC:并发 Mark-Sweep GC
吞吐量为 93.8 %
最长暂停:10.116 秒
暂停时间:6.21%
【问题讨论】:
-
我怀疑完整的 gc 需要 0.0402933 秒。对我来说,这仍然是次要的
-
我也认为这是另一个小收藏。是否有可能只是大量的短期对象在那时可供收集?