2010-08-20 5 views
4

Мне рассказала команда поддержки моей компании, что некоторые версии java оказывают значительное влияние на производительность, когда мы включаем -verbose:gc. Однако я не могу понять, так ли это или нет.Какие версии java медленны для записи gc?

Был ли этот журнал медленным (иш) в какой-то момент, и когда он остановился?

Причина, по которой я спрашиваю, заключается в том, что есть некоторые сомнения относительно применения этого к производственной среде для исследования потенциальных утечек памяти (и можем ли мы прекратить периодические перезагрузки системы ...).

В частности, я говорю о Java 1.4.2, который, как я думаю, представил аргумент и какой пакет обновления он применяет.

+6

Это то, что они говорят? По моему опыту, половина времени Они понятия не имеют, о чем они говорят. В отсутствие доказательств такие претензии являются просто сплетнями. – msw

+0

Этот конкретный человек службы поддержки является достаточно надежным, чтобы сделать это оправданием для дальнейшего расследования. Однако есть вероятность, что это просто какой-то другой аспект сборки мусора, который можно изменить, чтобы сильно повлиять на производительность. Я, конечно, не могу вспомнить это. – Stephen

+0

Боюсь, вы ошиблись. Я не сомневаюсь, что ваш сторонник поддержки полагал, что это правда, и, конечно, регистрация всегда будет медленнее, чем не протоколирование. Вы не упомянули, почему вам все равно, поэтому вопрос может быть выражен иначе, чем историческое любопытство, которое даст более прямой ответ. – msw

ответ

4

Я предлагаю вам сделать следующее:

  1. Пишем некоторый ориентир, который, вероятно, чтобы подчеркнуть сбор мусора. (Создавайте большие связанные структуры данных со слабыми ссылками и т. Д. И т. Д.).

  2. Установите копию той же версии JVM, которую вы используете в процессе производства на какой-либо тестовой коробке.

  3. Запустите тест с различными настройками регистрации GC, включая настройки, которые вы хотите запустить в процессе производства, измеряя влияние производительности на бенчмарк.

Если вы сделаете это правильно, это даст вам убедительные доказательства того, какое влияние на ваш производственный сервер будет оказывать влияние.

5

Я знаю, что вы спросили о влиянии подробностей: gc (Амир правильно), но на основе комментариев, которые, как я вижу, вы изучаете утечку памяти.

Возможно ли получить гистограмму вашей среды? подробный GC покажет вам, что есть утечка памяти, а не там, где сидит память.

Вы упомянули java 1.4.2, это ваша текущая версия? Если вы используете 1.5 или выше, можете использовать

jmap -histo <pid> > file.txt 

Это даст вам разбивку всех объектов в памяти. Вы замерзаете свою JVM на время, зависящее от объема памяти в системе. (2 ГБ может замерзнуть на минуту или около того даже на хорошем оборудовании) сначала проверьте это на системе разработки. Я знаю, что вы не хотите влиять на свою производственную среду, но это необходимое зло, чтобы найти источник проблемы. Сделайте захват прямо перед периодическим перезапуском, чтобы уделить больше внимания вашему воздействию.

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