Какие версии Java являются медленными для ведения журнала gc? - PullRequest
4 голосов
/ 20 августа 2010

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

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

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

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

Ответы [ 2 ]

5 голосов
/ 20 августа 2010

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

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

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

jmap -histo <pid> > file.txt

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

4 голосов
/ 20 августа 2010

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

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

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

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

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

...