Full GC - частота запуска Sun JVM - PullRequest
       38

Full GC - частота запуска Sun JVM

4 голосов
/ 16 октября 2010

В JDK 1.6: я вижу, что полный GC был запущен, но пространство старого поколения и perm gen не используется полностью - вопрос в том, насколько я понимаю, FGC работает только тогда, когда старый gen или perm gen заполнен - ​​я не могу чтобы понять, почему он работает, хотя% использования низок?

См. Вывод команды jstat -gcutil ниже:

  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
 0.00  82.14  51.17  13.78  26.43    219   19.347     1    0.131   19.479

  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
 82.14   0.00   9.12  13.92  26.66    222   19.771     1    0.131   19.902

  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
 82.14   0.00  11.07   9.07  24.15    230   20.166     2    1.851   22.017

Моя минимальная / максимальная куча составляет 1024M, а минимальное и максимальное пространство permGen определяется как 768M.

Ответы [ 3 ]

1 голос
/ 12 ноября 2010

Я решил проблему, поместив опцию jvm: XX:-DisableExplicitGC.

Некоторый код в каком-то внешнем файле jar мог явно вызывать System.gc, что привело к такому поведению при сборке мусора.Отключение этих параметров привело к ожидаемому поведению сборки мусора, когда должно было быть достигнуто 100% использования.

1 голос
/ 16 ноября 2010

Включите многословный gc, чтобы теперь точно, когда полный gc произошел. Поскольку jstat показывает события FGC даже для основных / постоянных коллекций

Для получения дополнительной информации посетите .

0 голосов
/ 18 октября 2010

FGC запускается только при заполнении старого или постоянного поколения

Это не так.Прочитайте справочный документ по Java здесь

Управление памятью в Java может удивить всех.Требуется много лет, чтобы научиться устанавливать параметры JVM для нетривиальных приложений.

Пространство permGen определено как 768M.

Уменьшите его до 128M

...