jvm堆使用计算

时间:2018-05-15 18:05:46

标签: jvm heap

我需要从gc.out日志中捕获jvm堆使用情况。这就是我在日志中看到的内容:

178.658: [GC (Metadata GC Threshold)  127089K->17827K(502784K), 0.0398140 secs]
178.698: [Full GC (Metadata GC Threshold)  17827K->17031K(502784K), 0.0482840 secs]
180.498: [GC (Allocation Failure)  148615K->20762K(502784K), 0.0082820 secs]

有人可以解释一下这些字段是什么意思吗?

1 个答案:

答案 0 :(得分:0)

字段顺序如下:

  1. 相对于JVM启动,GC启动的时间(以秒为单位)
    • 来自日志的值 178.658,178.698 180.498
  2. GC类型:可以是次要/重要/完整
    • 来自日志的值为 GC,完整GC GC
      • 从这里,我们只能说它是否是完整的GC。您需要更详细的日志记录才能看到内存的哪个部分被清除 - 年轻,终身或元空间(或其中某些组合),这有助于确定GC的确切类型。
  3. 原因导致GC被触发
    • 来自日志的值元数据GC阈值,元数据GC阈值分配失败
      • 元数据GC阈值:Metaspace是Permgen的Java 8替代品。所以这是因为你用完了permgen空间而被触发。
      • 分配失败:没有剩余空间来分配新对象。
  4. GC之前和之后使用的堆大小(格式在之前 - >之后)
    • 来自log的值 127089K-> 17827K,17827K-> 17031K 148615K-> 20762K
  5. 总堆大小
    • 来自日志的值 502784K
  6. GC的持续时间
    • 来自日志的值 0.0398140秒,0.0482840秒 0.0082820秒