gpt4 book ai didi

Java old gen 不断增长——需要帮助解释 Java GC 输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:25:56 25 4
gpt4 key购买 nike

我从事性能关键的服务器端 Java 应用程序。

系统启动后,我预计不会创建长生命周期对象 - 只有短生命周期对象(最多 10 秒)。因此,我想调整 JVM,以便在系统启动后老年代保持不变。

我想我已经成功了,但我不明白为什么(见下文)。

这是我们的设置:

-Xmx3000m -Xms3000m -详细:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=5 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=31 -XX:+PrintTenuringDistribution - XX:NewSize=1250m -XX:MaxNewSize=1250m

我们使用的是 Oracle 的 Java 1.6。

我真的对“PrintTenuringDistribution”标志的输出感到困惑。我看到这样的输出:

893.866: [GC 893.866: [ParNew
Desired survivor size 168512712 bytes, new threshold 16 (max 31)
- age 1: 13251072 bytes, 13251072 total
- age 2: 1135456 bytes, 14386528 total
- age 3: 59104 bytes, 14445632 total
- age 4: 467384 bytes, 14913016 total
- age 5: 68688 bytes, 14981704 total
- age 6: 43336 bytes, 15025040 total
- age 7: 41344 bytes, 15066384 total
- age 8: 6872 bytes, 15073256 total
- age 9: 87568 bytes, 15160824 total
- age 10: 23840 bytes, 15184664 total
- age 11: 99712 bytes, 15284376 total
- age 12: 5224 bytes, 15289600 total
- age 13: 1000 bytes, 15290600 total
- age 14: 59056 bytes, 15349656 total
- age 15: 65225584 bytes, 80575240 total
: 1015468K->95478K(1097152K), 0.0268070 secs] 1387738K->467748K(2889152K), 0.0269910 secs] [Times: user=0.31 sys=0.00, real=0.03 secs]
899.179: [GC 899.180: [ParNew
Desired survivor size 168512712 bytes, new threshold 16 (max 31)
- age 1: 12438336 bytes, 12438336 total
- age 2: 1531984 bytes, 13970320 total
- age 3: 87920 bytes, 14058240 total
- age 4: 58824 bytes, 14117064 total
- age 5: 463368 bytes, 14580432 total
- age 6: 68688 bytes, 14649120 total
- age 7: 43336 bytes, 14692456 total
- age 8: 40136 bytes, 14732592 total
- age 9: 6872 bytes, 14739464 total
- age 10: 87568 bytes, 14827032 total
- age 11: 23840 bytes, 14850872 total
- age 12: 99712 bytes, 14950584 total
- age 13: 2896 bytes, 14953480 total
- age 14: 1000 bytes, 14954480 total
- age 15: 65282456 bytes, 80236936 total
: 1009782K->98799K(1097152K), 0.0383370 secs] 1382052K->471069K(2889152K), 0.0385490 secs] [Times: user=0.36 sys=0.00, real=0.03 secs]

鉴于我有很多年龄为 15 的对象,并且阈值是 16,我希望 GC 中的每个对象要么 (a) 提升到老年代,要么 (b) 被垃圾收集。

但是根据 JConsole,我的老一代并没有增加。那么所有这些对象发生了什么?

最佳答案

您拥有的年龄适用于幸存者空间中的对象。由于你有一个很大的伊甸园空间,大多数进入幸存者空间的对象都会相对较旧。

关于Java old gen 不断增长——需要帮助解释 Java GC 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6706741/

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