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