Найти максимальный размер выделенной кучи во время выполнения с помощью командной строки VM? - PullRequest
4 голосов
/ 05 февраля 2012

Интересно, смогу ли я получить максимальный размер allocated heap с помощью командной строки VM.

Теперь я могу получить его, используя Netbeans Profiler, но я предпочитаю получать результат без необходимости запуска дополнительного приложения.

Я также использую этот метод:

public void printMemUsage(){
        double currentMemory = ( (double)((double)(Runtime.getRuntime().totalMemory()/1024.0)))- ((double)((double)(Runtime.getRuntime().freeMemory()/1024.0)));
        System.out.println("Current memory usage in kilobytes :"+currentMemory);
}

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

В настоящее время я использую эти командные строки:

-вербоз: gc -XX: + PrintGCDetails -XX: + PrintGCApplicationConcurrentTime -XX: + PrintGCApplicationStoppedTime

Для того, чтобы получить хорошую информацию о деятельности gc, молодое поколение, старое и постоянное. Но я просто могу сказать текущее общее пространство кучи, когда происходит сбор.

Так есть ли способ получить максимальное пространство кучи, выделенное с помощью других командных строк?

1 Ответ

2 голосов
/ 05 февраля 2012

Вы должны использовать MemoryMXBean, подробности смотрите в javadoc , поскольку он объясняет, как использовать его для получения информации о каждом MemoryPool (также известном как генерация) и для получения уведомлений, когда происходят различные события.

...