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

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

Ответы на вопрос(5)

MaxDirectMemorySize = 256M (по умолчанию 128) I '

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

 stu07 мар. 2014 г., 16:07
Собственная память также используется при выполнении вызовов nio, если вы выделяете буферы прямой памятью. (... и загрузчики классов, и информация о потоках ....)
 om-nom-nom20 мая 2013 г., 10:59
Я сомневаюсь, что op хотел этого: нативная память используется, когда вы делаете вызов кода C / C ++ из Java.
Решение Вопроса

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

 Peter De Winter21 мар. 2018 г., 10:30
Это неправильный ответ, параметры -Xms и -Xmx регулируют только размер кучи jvm, а не общее выделение памяти.
 vsingh31 янв. 2013 г., 20:06
он спрашивает о памяти JVM. То, что вы сказали, это размер кучи. Они оба разные
 LeYAUable29 мая 2019 г., 11:06
Это может быть полезно в некоторых случаях, но в моем случае это не решило мою проблему потребления памяти.
 urmalp30 сент. 2009 г., 02:36
Вы также можете посмотреть на MaxPermSize.
 Will01 апр. 2019 г., 10:19
Это не правильный ответ. Как упоминалось выше, он ограничивает размер кучи, но не оказывает большого влияния на всю память JVM.
 Blauhirn19 мар. 2017 г., 18:40
UHU. поэтому я поставил-Xmx524M и процесс занимает 1,2 ГБ оперативной памяти. (?)
 ChRoNoN26 февр. 2019 г., 16:31
Я думаю, что это использовалось для контроля общего объема памяти, JVM8 теперь использует свободный размер "PermGen» для классов и кода.
 murungu03 мар. 2014 г., 17:08
Чтобы повторить то, что упоминают другие комментарии, Xms и Xmx только настраивают кучу. Хотя настройка этих переменных косвенным образом влияет на пространство, не относящееся к куче, человек, задающий вопрос, пытается установить, существует ли способ настроить общее использование памяти (куча + не куча)
 Raghuram Vadapalli16 июн. 2016 г., 20:34
Возможно ли это сделать без использования командной строки? На самом деле, я использую библиотеку Python, которая использует файл JAR. Завершается из-за недостатка памяти во время выполнения. Будет полезно, если есть способ установить этот размер, прежде чем я выполню свой скрипт.

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

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

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

-Xmx<ammount of="" memory="">
</ammount>

Пример:

-Xmx1024m

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

 erotsppa29 сент. 2009 г., 20:31
Это не так, согласно этой теме, существует множество способов утечки за пределы кучи.stackoverflow.com/questions/1475290/...
 jjnguy29 сент. 2009 г., 20:37
Вы правы, есть много способов иметь проблемы с памятью, не относящиеся к стеку. Однако они не очень распространены.
 alexandergunnarson24 апр. 2018 г., 00:14
Хороший вопрос @ChristopherSchultz. Возвращаясь к этому через год, я понимаю, что это так. Это'неудачно, но неизбежно. К счастью, многие Java-библиотеки (например, Netty) используют буферы NIO только для памяти вне кучи (и, следовательно, настраиваются таким образом), а не, например. используя JNI.
 Christopher Schultz23 апр. 2018 г., 15:11
@alexandergunnarson TheMaxDirectMemorySize влияет только на буферы NIO. Все виды другой родной памяти используются JVM.
 alexandergunnarson02 февр. 2017 г., 17:37
Уверен, что вы можете контролировать его через-XX:MaxDirectMemorySize, Не то чтобы яЯ сильно профилировал, чтобы убедиться, но все же;)
 matt b29 сент. 2009 г., 21:17
Уверен, что вы можетеВы можете контролировать объем памяти без кучи, не так ли?

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

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

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

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

 vsingh15 мая 2017 г., 04:41
 Sam26 мая 2015 г., 06:09
Являетсяulimit команда Linux? Я сделал быстрый поиск в Google и нене вижу никакой связи междуulimit и JVM. Y

Ваш ответ на вопрос