Может ли кто-нибудь рассказать мне, как измерить время, затрачиваемое на создание дампов кучи, с помощью JConsole или VisualVM?

Я пытаюсь проанализировать влияние на производительность попытки создания дампа кучи для моего приложения, которое использует около 3 ГБ памяти кучи. Это нужно для того, чтобы решить и понять, должен ли я включить возможность создания дампов кучи в качестве упреждающей, а не последней реактивной меры при отслеживании утечек памяти. Кто-нибудь рассматривал что-нибудь подобное раньше. Это так, не могли бы вы помочь мне. Заранее спасибо.


person Rohit    schedule 26.03.2013    source источник


Ответы (1)


JVM останавливается во время дампа кучи, поэтому в зависимости от пропускной способности ввода-вывода и скорости процессора вашего оборудования это может занять от нескольких секунд до десятков секунд. Если вы хотите получить только живые объекты, вам нужно добавить время для полного GC. Вы можете попробовать запустить jmap -dump:live,format=b,file=heap.bin <pid> из командной строки, чтобы узнать, сколько времени это займет в вашем случае.

person Tomas Hurka    schedule 05.04.2013
comment
Спасибо, Томас, это помогло понять, что мне нужно делать. Я считаю, что могу запустить команду jmap, которую вы упомянули, как часть сценария оболочки с таймерами вокруг нее, чтобы измерить, сколько времени это может занять. Спасибо за вашу помощь. - person Rohit; 08.04.2013
comment
Хорошо, обратите внимание, что вы также можете пропустить опцию «живой». В таком случае GC не вызывается перед дампом кучи. - person Tomas Hurka; 08.04.2013