gpt4 book ai didi

Java 垃圾收集日志消息

转载 作者:IT老高 更新时间:2023-10-28 11:30:36 26 4
gpt4 key购买 nike

我已将 java 配置为将垃圾收集信息转储到日志 (verbose GC) 中。我不确定日志中的垃圾收集条目是什么意思。这些条目的示例发布在下面。我在 Google 上进行了搜索,但没有找到可靠的解释。

我有一些合理的猜测,但我正在寻找能够严格定义条目中数字含义的答案,并得到可靠来源的支持。对引用 sun 文档的所有答案自动 +1。我的问题是:

  1. PSYoungGen 指的是什么?我认为这与上一代(年轻?)有关,但究竟是什么?
  2. 第二个三元组和第一个有什么区别?
  3. 为什么为第一个三元组指定了名称 (PSYoungGen) 而不是第二个?
  4. 三元组中的每个数字(内存大小)是什么意思。比如109884K->14201K(139904K),就是GC前的内存109884k,然后降到14201K。第三个数字有什么关系?为什么我们需要第二组数字?

8109.128: [GC [PSYoungGen: 109884K->14201K(139904K)]691015K->595332K(1119040K), 0.0454530secs]

8112.111: [GC [PSYoungGen: 126649K->15528K(142336K)]707780K->605892K(1121472K), 0.0934560secs]

8112.802: [GC [PSYoungGen: 130344K->3732K(118592K)]720708K->607895K(1097728K), 0.0682690secs]

最佳答案

  1. PSYoungGen 指的是用于次要收集的垃圾收集器。 PS 代表 Parallel Scavenge。
  2. 第一组数字是年轻代的前后大小,第二组数字是整个堆的大小。 (Diagnosing a Garbage Collection problem 详细格式)
  3. 名称表示有问题的生成器和收集器,第二组用于整个堆。

一个关联的完整 GC 示例还显示了用于旧代和永久代的收集器:

3.757: [Full GC [PSYoungGen: 2672K->0K(35584K)] 
[ParOldGen: 3225K->5735K(43712K)] 5898K->5735K(79296K)
[PSPermGen: 13533K->13516K(27584K)], 0.0860402 secs]

最后,分解您的示例日志输出的一行:

8109.128: [GC [PSYoungGen: 109884K->14201K(139904K)] 691015K->595332K(1119040K), 0.0454530 secs]
  • 107Mb在GC之前使用,14Mb在GC之后使用,最大年轻代大小137Mb
  • 675Mb GC 前使用的堆,581Mb GC 后使用的堆,1Gb 最大堆大小
  • minor GC 自 JVM 启动后发生 8109.128 秒,耗时 0.04

关于Java 垃圾收集日志消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/895444/

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