Читать максимальный объем кучи во время выполнения - PullRequest
15 голосов
/ 14 июня 2009

Как мы все знаем, опция java -Xmx используется для установки максимального пространства кучи, доступного для Java-программы. Но есть ли способ для программы Java прочитать значение, которое было установлено? Что-то вроде System.getMaximumHeapSpace() (которого не существует).

1 Ответ

22 голосов
/ 14 июня 2009

Существует Runtime.maxMemory, который, как говорится в документации, вернет максимальный объем памяти, который виртуальная машина Java будет пытаться использовать, но не определено, является ли это максимальный объем памяти, установленный при запуск JVM.

В качестве теста я написал следующую программу:

class MaxMemory {
    public static void main(String[] args) {
        System.out.println(Runtime.getRuntime().maxMemory());
    }
}

Результаты казни были следующими:

C:\coobird\>java -Xmx64m MaxMemory
66650112

C:\coobird\>java -Xmx128m MaxMemory
133234688

Используется Java SE 6 версии 1.6.0_12 в Windows.

Хотя значения близки к 64 МБ (67 108 864 байт) и 128 МБ (134 217 728 байт), они не совсем такие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...