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

Java-приложение, которое использует много памяти. Использовать -Xmx?

У меня есть приложение java, которое использует около 15G на машине с 16G. Я не знаю, должен ли я установить максимальный размер кучи.

Если установлено, будет ли jvm потреблять все пределы до предела, а затем запускать сбор мусора и останавливать все, пока он перекачивает через 15G объектов кучи?

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

Моим конкретным vm является: Java-сервер HotSpot (TM) 64-разрядный сервер VM (сборка 1.6.0_03-b05, смешанный режим).

Спасибо

4b9b3361

Ответ 1

-Xmx15G установит максимальный размер кучи на 15 гигабайт. Java будет выделять только то, что ему нужно. Если вы его не установили, он будет использовать только по умолчанию. Для информации по умолчанию см. этот пост.

-Xms15G устанавливает минимальную кучу на 15 концертов. Это заставляет java выделять 15 гигабайт пространства кучи, прежде чем он начнет выполнение, независимо от того, нуждается он в этом или нет.

Обычно вы можете установить их как соответствующие значения в зависимости от того, как вы настраиваете JVM.

Ответ 2

В Java 6 максимальный размер кучи по умолчанию определяется объемом присутствующей системной памяти.

В соответствии с страницами эргономики сборщика мусора максимальный размер кучи:

Меньше 1/4-го физического памяти или 1 ГБ. До J2SE 5.0 максимальный размер кучи по умолчанию - 64 МБ.

Используя переключатель -Xmx, можно использовать для изменения максимального размера кучи. Подробнее об использовании см. В документации java - приложение для запуска приложений Java.

Ответ 3

Если вы не задаете максимальный размер кучи (с -Xmx), не является максимальным значением по умолчанию только 64 МБ?

Так не будет ли ваше приложение терпеть неудачу с OutOfMemoryError, если вы его не установили? Я смущен этим вопросом. Как ваше приложение может работать без этого коммутатора?