Как установить максимальное использование памяти для JVM?



Я хочу, чтобы ограничить максимальный объем памяти, используемой виртуальной машины. Обратите внимание, что это не просто куча, я хочу ограничить общую память, используемую этим процессом.

621   5  

5 ответов:

использовать аргументы -Xms<memory>-Xmx<memory>. Используйте M или G после чисел для указания мегабайт и гигабайт байт соответственно. -Xms и -Xmx максимум.

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

Это просто куча. Извините, сначала не прочитал Ваш вопрос полностью.

вам нужно запустить JVM со следующим аргументом командной строки.

-Xmx<ammount of memory>

пример:

-Xmx1024m

Это позволит максимум 1 ГБ памяти для виртуальная машина Java.

Если вы хотите ограничить память для JVM (не размер кучи ) ulimit-v

чтобы получить представление о разнице между JVM и памяти , взгляните на эту прекрасную статью http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the-java-process.html

ответ выше является отчасти правильным, Вы не можете изящно контролировать, сколько собственной памяти выделяет процесс java. Это зависит от того, что делает ваше приложение.

тем не менее, в зависимости от платформы, вы можете использовать какой-либо механизм, например ulimit, чтобы ограничить размер java или любого другого процесса.

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

NativeHeap может быть увеличен на-XX:MaxDirectMemorySize=256M (по умолчанию-128)

Я никогда не использовал его. Может быть, вы найдете его полезным.

Comments

    Ничего не найдено.