Подтвердить что ты не робот

Побочный эффект для увеличения maxpermsize и максимального размера кучи

Может ли кто-нибудь объяснить побочные эффекты для увеличения размера maxpermsize и max heap?

Я знаю, что иногда мы увеличиваем -Xmx, когда сталкиваемся с проблемой outofmemory. Но мне просто интересно, есть ли побочный эффект, который мне нужно иметь в виду, когда мы увеличиваем -Xmx. И как увеличение maxpermsize влияет на время выполнения?

Спасибо.

4b9b3361

Ответ 1

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

Удвоение размера кучи java, удваивает время ожидания для пауз в сборке мусора, что при использовании современных технологий JVM количество секунд, когда куча находится в порядке Gb. Похоже, что недавно выпущенная Java 7 изменит это.

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

MaxPermSize - максимальный размер для кучи постоянного поколения, куча, которая содержит байтовый код классов и хранится отдельно от кучи объекта, содержащей фактические экземпляры. Одна вещь, которую следует иметь в виду в случае веб-приложений, заключается в том, что при каждом повторном развертывании это использование памяти будет увеличиваться с помощью нескольких копий одних и тех же классов. Если не указано значение -XX: + CMSClassUnloadingEnabled.

Максимальный размер кучи (-Xmx) и MaxPermSize должны быть установлены с учетом того, сколько памяти требуется классам приложений и экземплярам, ​​общая память сервера и память, необходимые другим приложения.

Другим важным моментом является то, что расширение памяти из Min Heap Size (-Xms) является дорогостоящей операцией. Особенно в случае финансовых приложений это может означать задержки. С аналогичными требованиями в реальном времени было бы неплохо установить -Xms и -Xmx одинаковое значение.

Следующий разговор может представлять интерес http://www.infoq.com/presentations/Java-without-the-GC-Pauses

Из разговора вы можете убедиться, что побочный эффект увеличения кучи более определенного предела 2Gb, 10Gb, 100Gb означает более длительное время паузы для коллекции мусора, которое может остановить все в течение секунд или минуты в случае очень больших куч.

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

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

И, наконец, для справки приведены некоторые примеры настроек:

-Xms512m -Xmx512m -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled

Ответ 2

Решено, изменив настройку ниже. Файл → Параметры → Центр доверия → Настройки центра доверия → Внешний контент → Включить автоматическое обновление для всех ссылок на рабочую книгу.

- Спасибо