2010-10-16 4 views
4

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

См выхода 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.

+0

Возможна одна из причин: RMI: «RMI заставляет периодическую полную сборку. Частоту этих коллекций можно контролировать с помощью свойств. Java -Dsun.rmi.dgc.client.gcInterval и -Dsun.rmi.dgc.server. gcInterval "http://java.sun.com/docs/hotspot/gc1.4.2/ – Anna

ответ

0

ФСК работает только тогда, когда старый ген или завивка поколение полно

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

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

Пространство проницаемости определяется как 768M.

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

+0

Невозможно уменьшить пространство perm gen - так как наше приложение сильно поглощает его ... есть ли недостаток в использовании для него большого значения? – Anna

+0

Почему вы используете приложение per gen gen сильно? Используете ли вы синтаксический анализатор dom xml или сравниваете многие строки с вызовом? – iddqd

+0

Из ссылки в формате pdf, которую вы указали: «Когда молодое поколение заполняется, выполняется собрание молодого поколения (иногда называемое небольшой сборкой) только этого поколения. Когда старое или постоянное поколение заполняется, то, что известно как как правило, делается полная коллекция (иногда называемая крупной коллекцией). Каковы те случаи, когда старый/перманентный пол не заполнен, а GC выполнен? – Anna

1

Я решил проблему путем размещения JVM выбирает: XX:-DisableExplicitGC.

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

1

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

For more info visit.

Смежные вопросы