Подтвердить что ты не робот

Как проверить использование кучи запущенной JVM из командной строки?

Могу ли я проверить использование кучи запущенной JVM из командной строки, я имею в виду фактическое использование, а не максимальное количество, выделенное Xmx.

Мне нужно, чтобы это была командная строка, потому что у меня нет доступа к среде окон, и я хочу script на основе значения, приложение выполняется на сервере приложений Jetty

4b9b3361

Ответ 2

Для Java 8 вы можете использовать следующую командную строку, чтобы получить использование пространства кучи в kB:

jstat -gc <PID> | tail -n 1 | awk '{split($0,a," "); sum=a[3]+a[4]+a[6]+a[8]; print sum}'

Команда в основном суммирует:

  • S0U: использование ресурса оставшегося в живых 0 (kB).
  • S1U: использование ресурса 1 оставшегося в живых (kB).
  • ЕС: использование пространства Eden (kB).
  • OU: использование старого пространства (kB).

Вы также можете включить использование метараспределения и сжатого пространства классов. В этом случае вы должны добавить [10] и [12] к сумме awk.

Ответ 3

Если вы запускаете выполнение с включенным протоколом gc, вы получаете информацию о файле. В противном случае 'jmap -heap' даст вам то, что вы хотите. Подробнее см. jmap doc page.

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