Домой Учебники по Java и J2EE Настройка JVM: фундаментальный размер, размер стека и сборка мусора

Настройка JVM: фундаментальный размер, размер стека и сборка мусора

635
0

Размер кучи:

Когда программа Java запускается, виртуальная машина Java получает некоторую память от операционной системы. Виртуальная машина Java или JVM использует эту память для всех своих нужд, и часть этой памяти называется памятью кучи Java. Всякий раз, когда мы создаем объект, используя new operator или любым другим способом объекту выделяется память из кучи, и когда объект умирает или собирает мусор, память возвращается в пространство кучи в Java.

Учебник по увеличению размера памяти Eclipse, чтобы избежать OOM при запуске .

Опция JVM Имея в виду
-Xms начальный размер кучи Java
-Xmx максимальный размер кучи Java
-Xmn размер кучи для молодого поколения

Для крупных производственных проектов целесообразно устанавливать minimum -Xms а также maximum -Xmx размеры кучи к тому же значению.

Для эффективного сбора мусора, -Xmn значение должно быть ниже, чем -Xmx значение. Размер кучи не определяет объем памяти, используемый вашим процессом.

Если вы наблюдаете за процессом Java с помощью инструмента ОС, такого как top или task manager вы можете увидеть, что объем используемой памяти превышает объем, указанный вами для -Xmx. -Xmx ограничивает размер кучи Java, Java будет выделять память для других вещей, включая стек для каждого потока . Нередко общее потребление памяти виртуальной машиной превышает значение -Xmx.

Размер стека:

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

ЧИТАТЬ ТАКЖЕ:  Лучший способ преобразовать Примитивный Массив в Список в Java8 и Классическом toString (), Итератор
Опция JVM Имея в виду
-Xss размер стека для каждого потока

-Xss определяет размер стека: Xss1024k , Если пространство стека слишком мало, в конечном итоге вы увидите исключение класса java.lang.StackOverflowError.

Вывоз мусора:

По сути, работают два потока GC. Одна из них — очень легкая нить, которая собирает «маленькие» коллекции в первую очередь для молодого поколения кучи. Другой является Full GC thread которая пересекает всю кучу, когда не хватает памяти, чтобы выделить место для объектов, которые повышаются от молодых до старшего поколения.

Если имеется утечка памяти или выделена неадекватная куча, в конечном итоге старшее поколение начнет исчерпывать пространство, в результате чего поток Full GC будет работать (почти) непрерывно.

Поскольку этот процесс stops the world Java-приложение не сможет отвечать на запросы, и они начнут выполнять резервное копирование или OOM .

Сумма, выделенная на Young(Eden) поколение это значение, указанное с -Xmn , Сумма, выделенная на older generation is the value of -Xmx minus the -Xmn ,

Как правило, вы не хотите, чтобы Eden был слишком большим, или GC потребуется слишком много времени, чтобы просмотреть его и найти пространство, которое можно восстановить.

Настройка JVM: фундаментальный размер, размер стека и сборка мусора

0.00 (0%) 0 votes

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь