gpt4 book ai didi

java - 为什么在 jstat -gcutil 的结果中显示的不是 FullGC,而是老一代从 99% 到 14%?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:01:55 26 4
gpt4 key购买 nike

jstat -gcutil 如下图:

enter image description here

老一代先从13.78到99.98,再到14.81,但是FGCT一直是1,为什么?

除了FullGC,还有其他原因造成这种情况吗?

GC是CMS和JVM参数:

-Xms4096m -Xmx4096m -Xss256k -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:SurvivorRatio=16 -XX:+UseParNewGC -XX:ParallelGCThreads=16 -XX:MaxTenuringThreshold=32 -XX:+UseConcMarkSweepGC -XX:ParallelCMSThreads=8 -XX:+CMSParallelRemarkEnabled -XX:+CMSPermGenPrecleaningEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSCompactAtFullCollection

最佳答案

我自己做了一些测试,我的结论是,当使用 JVM 参数运行时,它似乎是 jstat 中的错误。我在一个简单的测试应用程序上同时运行 jstat -gc 和 jstat -gcutil,得到以下输出:

jstat -gc:

S0C    S1C    S0U    S1U      EC       EU        OC         OU
29120,0 29120,0 0,0 0,0 466048,0 18642,2 3670016,0 0,0
29120,0 29120,0 0,0 0,0 466048,0 18642,2 3670016,0 0,0
29120,0 29120,0 0,0 0,0 466048,0 18642,2 3670016,0 0,0
29120,0 29120,0 0,0 0,0 466048,0 18642,2 3670016,0 0,0
29120,0 29120,0 0,0 0,0 466048,0 18642,2 3670016,0 0,0
29120,0 29120,0 0,0 0,0 466048,0 55926,2 3670016,0 0,0
29120,0 29120,0 0,0 0,0 466048,0 369663,6 3670016,0 0,0
29120,0 29120,0 0,0 29120,0 466048,0 466048,0 3670016,0 94773,6
29120,0 29120,0 0,0 29120,0 466048,0 299100,8 3670016,0 118478,6
29120,0 29120,0 29120,0 0,0 466048,0 9163,2 3670016,0 254498,6

jstat -gcutil

 S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
0,00 0,00 4,00 0,00 0,93 0 0,000 0 0,000 0,000
0,00 0,00 4,00 0,00 0,93 0 0,000 0 0,000 0,000
0,00 0,00 4,00 0,00 0,93 0 0,000 0 0,000 0,000
0,00 0,00 4,00 0,00 0,93 0 0,000 0 0,000 0,000
0,00 0,00 4,00 0,00 0,93 0 0,000 0 0,000 0,000
0,00 0,00 26,00 0,00 0,97 0 0,000 0 0,000 0,000
0,00 0,00 89,32 0,00 0,97 0 0,000 0 0,000 0,000
0,00 100,00 100,00 100,00 0,97 1 0,000 0 0,000 0,000
0,00 100,00 80,02 3,23 0,97 1 0,905 0 0,000 0,905
100,00 0,00 13,76 6,93 0,97 2 1,441 0 0,000 1,441

如您所见,即使应用程序刚刚开始填充旧代,运行 -gcutil 时使用的旧代也会跳转到 100。 jstat -gc 显示老一代几乎完全是空的。该应用程序非常简单,只需填充一个 HashMap,为什么当 jstat -gcutil 这么说时,老一代不可能 100% 填满。

关于java - 为什么在 jstat -gcutil 的结果中显示的不是 FullGC,而是老一代从 99% 到 14%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27918259/

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