2016-03-04 5 views
0

Мне поручено анализировать сбор мусора. Я настроил сервер для регистрации GC, и статистика поставлена ​​правильно. Теперь, когда у меня есть информация GC, у меня есть вопрос о настройке. После подключения моего файла GC к аналитическому инструменту я вижу, что нет полного GC GC только GC. Это проблема?
Кроме того, если вы посмотрите на следующую строку ...Как анализировать сбор мусора JVM?

[PSYoungGen: 454784K->14336K(450688K)] 685884K->258421K(1761408K), 8.6630322 secs] [Times: user=30.25 sys=1.20, real=8.66 secs] 

Означает ли это ....

454784K->14336K = Usage of Young generation before and after collection 

Для меня это похоже на более молодую GC раньше, чем после коллекций. В этом случае я должен создать новое соотношение? Или я смотрю на это назад?

685884K->258421K = Total used heap before and after collection 

Кроме того, самый высокий раз, когда я после запуска теста JMeter является ...

[Times: user=30.25 sys=1.20, real=8.66 secs] 

Наименьшее время у меня есть

[Times: user=0.73 sys=0.29, real=0.16 secs] 

Означает ли это, что мне нужно сосредоточиться на код, чтобы понять, почему эта конкретная задача настолько высока? Может быть, это проблема с потоками/БД?

Должен ли я попытаться получить эти цифры как можно ближе 454784K-> 14336K? Нужен ли мне полный GC?

Любые идеи?

ответ

1

Это зависит от вашей цели. Вы GC раз меняются в зависимости от ряда факторов, наиболее важным является

  • был выполнен с полным GC.
  • сколько данных было сохранено у молодого поколения.

ИМХО Лучший способ повысить производительность - снизить уровень распределения. Это сделает ваш код быстрее между сеансами GC, уменьшит количество пауз GC и упростит настройку вашего приложения. Я предлагаю попробовать Flight Recorder для мониторинга распределения памяти.

+0

Спасибо, Питер. Я рассмотрю вопрос о снижении ставок распределения. Можно ли сказать, что полный GC не был выполнен, так как я не вижу полного GC в журналах. Только PSYoungGen. Или, может быть, полный GC требует времени, чтобы показать в журнале, может быть, день или два? –

+0

@Angular_Newbie Полный GC обычно возникает, когда заполненное пространство заполняется. Сколько времени это займет, зависит от вашего приложения и конфигурации. Это могут быть секунды или дни. Вы можете наблюдать регионы GC с помощью 'jstat -gccause {pid} 10s', чтобы вы могли видеть каждый регион по мере его заполнения и когда происходит GC и почему. –

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