Кто-нибудь знает хорошее руководство по настройке GC на Java? - PullRequest
3 голосов
/ 21 декабря 2010

У меня проблемы с JVM, работающей с приложением, чья куча памяти выглядит как гребень.Он постоянно скачет с 1,5 ГБ до 3 ГБ и постепенно ухудшается до более высоких значений.Я использую алгоритм G1 GC, но не знаю, как его настроить.

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

Итак, суть, кто-нибудь знает хорошее руководство по настройке GC в Java?

Ответы [ 3 ]

6 голосов
/ 21 декабря 2010

Настройка JVM - это сочетание искусства и науки, и нет единого ответа для всех. Ситуация, которую вы видите, звучит так, как если бы GC по умолчанию делал «отметку сейчас, развертка позже», что может привести к паузам во время развертки. Один набор опций, которые вы можете попробовать:

JAVA_OPTS="-server -XX:-UseParallelGC -XX:-UseConcMarkSweepGC"

Эта комбинация опций в основном запускает другой поток (лунка 2) в фоновом режиме, который постоянно помечает и перемещает GC. Штраф, который вы платите, - это чуть больше использования ЦП, но в наши дни ЦП это едва заметно для большинства людей.

Вот все варианты: http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

Вам действительно нужно прочитать столько статей о «настройке производительности java» через Google, сколько вам нужно найти, вам нужно профилировать свое приложение (многословный GC), чтобы узнать, что оно делает, чтобы получить правильное сочетание параметров с Java. Как и все остальное, просто слепое выбрасывание опций, не зная, что они делают, может привести к снижению производительности, а не к улучшению.

3 голосов
/ 22 декабря 2010
1 голос
/ 27 декабря 2012

В настоящее время наиболее актуальными ресурсами для GC в виртуальной машине Hotspot являются следующие:

...