2017-01-19 4 views
1

Как указано в заголовке, сколько накладных расходов jmap -histo и jmap -heap вывести на jvm соответственно?jmap - Выполняет ли операция histo & heap накладные расходы на jvm?

Если процесс Java с чувствительностью к памяти находится на краю OutOfMemory (например, около 96% кучи заполнено и не может быть очищено полным gc), возможно ли, чтобы одна из операций привела jvm к Недостаточно памяти?

ответ

2

jmap -histo и jmap -heap работают по-разному: jmap -histo использует динамический Приложить механизм, и jmap -heap работает через HotSpot Удобство обслуживания агента. Разница описана here.

Таким образом, jmap -histo выполнен сам JVM, но jmap -heap работает в процессе инструмента, в то время как процесс JVM приостановлен. В обоих случаях новые объекты Java не создаются, инструмент не вызывает OutOfMemoryError.

В обоих случаях прикладные потоки останавливаются: jmap -histo останавливает потоки Java, а jmap -heap останавливает весь процесс JVM. Продолжительность паузы может быть довольно длинной, особенно для больших куч. Например. может пройти несколько секунд, чтобы пройти через кучу 4 ГБ.

Смежные вопросы