Как установить максимальный объем памяти, который процесс JVM будет пытаться выделить? - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь установить максимальное количество байтов, которое процесс JVM будет пытаться выделить. Я говорю не о куче , а об общем объеме памяти на уровне ОС. Я посмотрел усердно, но не нашел никаких решений, в которые мне трудно поверить. Даже с Java 10, который должен оставаться в пределах памяти контейнера.

Этот вопрос был задан около 9 лет назад (см .: Как установить максимальное использование памяти для JVM? ), но ответ неверен .

Объект Runtime содержит метод maxMemory(), который неправильно задокументирован следующим образом:

Возвращает максимальный объем памяти, который виртуальная машина Java пытается использовать.

Метод maxMemory() возвращает максимальный объем кучи, а не общий объем памяти, который может потребовать процесс JVM.

Вопрос : Правда ли, что JVM не может управлять жестким ограничением на использование собственной памяти?

1 Ответ

0 голосов
/ 01 ноября 2018

Вероятно, нет строгого ограничения, которое можно легко установить, например, Стеки потоков Java, скомпилированный код и буферы NIO размещаются вне кучи. Даже если мы суммируем -Xmx, -Xss, -XX:MaxMetaspaceSize и другие параметры, всегда существует вероятность того, что пользовательский собственный код, взаимодействующий через собственный интерфейс Java, будет управлять своей собственной памятью.

...