Ответ 1
Вы можете использовать jstat, например:
jstat -gc pid
Полные документы: http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html
Могу ли я проверить использование кучи запущенной JVM из командной строки, я имею в виду фактическое использование, а не максимальное количество, выделенное Xmx.
Мне нужно, чтобы это была командная строка, потому что у меня нет доступа к среде окон, и я хочу script на основе значения, приложение выполняется на сервере приложений Jetty
Вы можете использовать jstat, например:
jstat -gc pid
Полные документы: http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html
Для Java 8 вы можете использовать следующую командную строку, чтобы получить использование пространства кучи в kB:
jstat -gc <PID> | tail -n 1 | awk '{split($0,a," "); sum=a[3]+a[4]+a[6]+a[8]; print sum}'
Команда в основном суммирует:
Вы также можете включить использование метараспределения и сжатого пространства классов. В этом случае вы должны добавить [10] и [12] к сумме awk.
Если вы запускаете выполнение с включенным протоколом gc, вы получаете информацию о файле. В противном случае 'jmap -heap' даст вам то, что вы хотите. Подробнее см. jmap doc page.
Обратите внимание, что jmap
должен не использоваться в производственной среде, если это абсолютно необходимо, поскольку инструмент останавливает приложение, чтобы определить фактическое использование кучи. Обычно это нежелательно в производственной среде.