2012-05-15 3 views
6

Я собираюсь развернуть приложение на реальном сервере, и сейчас я нахожусь в той части, где мне нужно установить размеры кучи и пермен для jvm. Я видел много статей, и все они говорят «установить минимальный размер кучи на (некоторый номер)» и «установить максимальный размер кучи на (некоторое число)», но ни одна из этих статей действительно не говорит, почему должен быть задан минимальный размер кучи. Я понимаю причину установить максимальный размер кучи, но не о минимуме. Я был бы благодарен, если бы вы прояснили это.Нужно ли мне определять размер кучи java минимальный

+0

Хорошо, почему бы вам установить нижний предел на что-нибудь? Потому что ваша программа может потребовать определенной суммы. Я не понимаю вопрос? Вы имеете в виду, что настройка min действительно требуется? – keyser

+2

Возможный дубликат [В чем причина установки минимального размера кучи Java?] (Http://stackoverflow.com/questions/8085949/whats-the-reason-to-set-a-minimal-java-heap-size) – assylias

ответ

6

Куча в Java - это общая область выделения памяти. Предположим, что мы устанавливаем минимальный размер кучи на 1000 байт (это абсурдно малое число). Теперь скажем, что я создаю экземпляр объекта в моей программе, который содержит текст длиной в две тысячи символов. Я не могу сохранить этот объект без предварительного расширения размера кучи. Теперь, предположительно, мой максимальный параметр кучи достаточно велик, чтобы это можно было сделать, но это причина для установки максимального размера кучи.

Однако предположим, что у моего сервера 4G RAM, и я установил для него минимальный размер кучи. (Абсурдно большое число.) Если никакие другие программы не занимали какую-либо память, это сработает. Однако, если бы я начал второй процесс с помощью моей java-программы, он не смог бы выделить достаточную память и выйти.

Минимальный размер делает две вещи для вас; во-первых, он быстро позволяет оперативной памяти, чтобы обеспечить быстрый запуск. Во-вторых, он позволяет вам настроить ваш jvm, чтобы у вас были некоторые инварианты, позволяющие делать прогнозы о том, сколько процессов вы можете запустить. Если ваш размер минимальной кучи слишком велик, вы, вероятно, тратите память на процесс, который никогда не нуждается в этом, ограничивая емкость вашей системы. Если вы установите слишком маленький, для запуска программы потребуется много времени, что отрицательно скажется на производительности процесса.

1

Установка минимального размера кучи позволяет Java выделять некоторую память спереди, что улучшает время запуска.

1

Установка минимального размера в явном виде (выше значения по умолчанию) помогает с фрагментацией распределения на уровне ОС и начальной продолжительностью работы.

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

Установка минимального значения, равного или почти равного максимуму, полностью устранит эти ситуации.

Смежные вопросы