побочный эффект для увеличения максимального размера и максимального размера кучи - PullRequest
33 голосов
/ 01 августа 2011

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

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

Спасибо.

Ответы [ 2 ]

86 голосов
/ 02 августа 2011

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

Удвоение размера кучи 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
0 голосов
/ 12 декабря 2016

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

- Спасибо

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