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



Answers

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

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

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

-Xmx<ammount of memory>

Пример:

-Xmx1024m

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

Question

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




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

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

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




Links