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

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

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

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

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

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

 -Xmx 

Пример:

 -Xmx1024m 

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

Если вы хотите ограничить память для 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)

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

Давайте будем гением компьютера.