Я особисто віддаю перевагу VisualVM. Однією з особливостей, які мені подобаються у VisualVM, є порівняння купи дампа. Коли ви робите аналіз звалищних кущів, існують різні способи з'ясувати, що спричинило збій. Одним із способів, який я вважаю корисним, є порівняння здорових та нездорових відвалів.
Нижче наведено кроки, які ви можете виконати для цього:
- Отримання купольного дампа OutOfMemoryError давайте назвемо його "oome.hprof". Ви можете отримати це за допомогою параметра JVM HeapDumpOnOutOfMemoryError.
- Перезапустіть програму, нехай вона працює протягом великих хвилин (годин / годин) залежно від вашої програми. Отримайте ще один відвал купи, поки програма все ще працює. Назвемо це "здоровим.hprof".
- Ви можете відкрити обидва ці дампи у VisualVM та зробити порівняння з накопиченням. Це можна зробити на рівні класу або пакету. Це часто може вказувати вам на напрямок проблеми.
посилання: https://visualvm.github.io