Если я увеличу кучу памяти, это увеличит время GC - PullRequest
3 голосов
/ 07 июня 2011

Мое текущее приложение работает на 2 ГБ памяти. Обычный цикл ГХ.

Я хочу увеличить объем памяти JVM до 4 ГБ, чтобы снизить производительность приложения.

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

Ответы [ 6 ]

5 голосов
/ 07 июня 2011

Короткий ответ

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

длинный ответ

Есть несколько факторов, которые следует учитывать.Как вы настроили GC для работы?Насколько велики вы оценили свой молодой ген?Как часто вы видите полные GC?

Если вы редко видите полные GC, тогда разница будет незначительной.Если вы регистрируете свою активность GC для регистрации, вы можете увидеть, что время паузы для частичной GC очень быстро.Разница между 2 ГБ и 4 ГБ на частичном ГХ составит около 0,1 с.Для регистрации активности GC вы можете использовать следующие параметры -XX:+PrintGCDetails -verbose:gc -Xloggc:/log/path/gc.log.Есть много инструментов, которые будут читать этот журнал GC для вас, предоставлять графики и статистику, такую ​​как пропускная способность и общее время паузы.

Если вы часто видите Full GC, и именно поэтому вы хотите добавить больше памятитогда вы можете рассмотреть вопрос о профилировании приложения, чтобы увидеть, что потребляет всю память.С большей кучей эти проблемы будут приводить к увеличению времени работы GC до тех пор, пока вы не исправите основные проблемы.

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

4 голосов
/ 07 июня 2011

Большие кучи == длинные паузы GC.

Я видел, как GC останавливался на несколько минут на кучах размером ~ 10G.

С другой стороны, меньшие кучи означают более частые (но более короткие) циклы GC. Не существует хорошего общего решения этой проблемы - все зависит от потребностей вашего приложения (высокоскоростное торговое приложение? Веб-сервер котят?), Аппаратного обеспечения, оттока объектов и т. Д.

Несколько хороших ресурсов для чтения на эту тему:

2 голосов
/ 07 июня 2011

Нет простого ответа, потому что ответ зависит от того, что ваше приложение использует в памяти.Однако вы должны принять во внимание, что если вы увеличите память jvm, тогда ваше приложение будет иметь больше памяти ... и если вся эта память будет использоваться, то ваш gc будет вызываться чаще (увеличение времени GC)Увеличение памяти не всегда является лучшим решением, оптимизация использования объектов и утилизация неиспользуемых объектов могут быть лучшим решением.

1 голос
/ 07 июня 2011

Если вы хотите узнать, как настроить JVM, вы можете начать с чтения http://java.sun.com/performance/reference/whitepapers/tuning.html и http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html

На ваш вопрос нет простого ответа, но увеличение кучи задержит полную сборку мусора, но также продлит ее дольше.

1 голос
/ 07 июня 2011

Увеличение объема доступной памяти приведет к снижению общего времени, затрачиваемого на сборку мусора, но увеличит время, необходимое для полного сбора мусора. Однако современные JVM больше не обязательно используют сборщики мусора «останови мир».

Настройка GC, конечно, зависит от того, какую JVM вы используете. Oracle JVM имеет огромное количество опций настройки GC и довольно обширное руководство по настройке .

0 голосов
/ 07 июня 2011

Настройка производительности - это черное искусство, и как только вы начинаете изменять настройки ГХ, вам нужно постоянно следить за этим, потому что, по моему мнению, вы говорите виртуальной машине, что вы знаете лучше.

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

подробный: gc -XX: + PrintGCDetails XX: + PrintGCTimeStamps –Xloggc: PATH_FROM_ROOT / gclog.log

Используйте JVisualVM, Jconsole или хороший профилировщик, например JProfiler, для мониторинга,Хорошее место, чтобы начать читать о GC: * ​​1009 *

Настройка сборки мусора

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