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

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

Ответ 1

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

Ответ 2

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

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

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

-Xmx<ammount of memory>

Пример:

-Xmx1024m

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

Ответ 4

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

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

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

Ответ 5

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

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