jvm不会年轻的GC,s0 / s1不会被使用,大多数实例都是字符串,如何优化?

时间:2015-06-03 03:40:43

标签: string garbage-collection jvm

我有一个配置了堆空间大小s0:s1:Eden = 2:2:8的glassfish。我发现jvm不会年轻的gc

(! 22958)-> jstat -gc 1398 1000 100
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT
33792.0 19456.0  0.0    0.0   108544.0 108544.0  349184.0   348941.2  173568.0 173422.5  92634 1210.784 34932 20945.828 22156.612
33792.0 19456.0  0.0    0.0   108544.0 101252.3  349184.0   348941.2  173568.0 173422.5  92634 1210.784 34932 20946.499 22157.282
33792.0 19456.0  0.0    0.0   108544.0 108544.0  349184.0   348941.2  173568.0 173422.5  92634 1210.784 34933 20946.499 22157.282
33792.0 19456.0  0.0    0.0   108544.0 108544.0  349184.0   348941.2  173568.0 173422.5  92634 1210.784 34934 20947.106 22157.890
33792.0 19456.0  0.0    0.0   108544.0 74357.8   349184.0   348941.2  173568.0 173422.5  92634 1210.784 34935 20948.298 22159.082
33792.0 19456.0  0.0    0.0   108544.0 90966.8   349184.0   348941.2  173568.0 173422.5  92634 1210.784 34935 20948.298 22159.082
33792.0 19456.0  0.0    0.0   108544.0 96473.6   349184.0   348941.2  173568.0 173422.5  92634 1210.784 34935 20948.298 22159.082
33792.0 19456.0  0.0    0.0   108544.0 100628.3  349184.0   348941.2  173568.0 173422.5  92634 1210.784 34935 20948.298 22159.082

我相信为什么年轻的gc不会被预先形成:保持活着大小的实例大于S0/S1大小, 所以我转储堆并发现大多数实例是Stringchar[] enter image description here

那么如何优化呢?

1 个答案:

答案 0 :(得分:2)

如果旧空间已满,则跳过年轻的GC(这是您的情况)。

S0 / S1无关紧要。

增加旧空间,GC将正常运行。