Изменение поведения GC после перехода с Java5 на 6 - PullRequest
2 голосов
/ 03 декабря 2009

Недавно мы перенесли наши системы с Sun Java 5 на виртуальную машину сервера Java6 (в частности, 1.6.0_16 в 32-разрядной версии Linux). Мы заметили, что поведение при сборке мусора изменилось таким образом, чтобы запустить нашу систему мониторинга предупреждений о куче.

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

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

Я предполагаю, что может быть какой-то параметр -XX, который мы можем установить для достижения этой цели, но я не вижу ничего подобного в документации. Кто-нибудь знает такой вариант?

Ответы [ 3 ]

3 голосов
/ 03 декабря 2009

Звучит так, будто вы действительно хотели бы иметь что-то более похожее на параллельную коллекцию (в отличие от стандартных коллекций большого взрыва):

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

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

2 голосов
/ 03 декабря 2009
1 голос
/ 03 декабря 2009

Можете ли вы подтвердить, что используется та же схема / механизм ГХ? Вы рассчитываете более высокие издержки GC в 1.6 или время паузы больше в течение любой данной продолжительности?

Директивы о максимальной и минимальной куче также могут помочь с эргономикой вашей кучи.

-XX:MinHeapFreeRatio и -XX:MaxHeapFreeRatio

http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html#generation_sizing.total_heap

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...