Saya memiliki server produksi yang berjalan dengan bendera berikut: - XX: + HeapDumpOnOutOfMemoryError
Tadi malam ia menghasilkan file java-38942.hprof ketika server kami mengalami kesalahan tumpukan. Ternyata para pengembang sistem tahu tentang bendera itu tetapi tidak ada cara untuk mendapatkan informasi yang berguna darinya.
Ada ide?
Anda dapat menggunakan JHAT , Alat Analisis Java Heap yang disediakan secara default dengan JDK. Ini adalah baris perintah tetapi memulai server web / browser yang Anda gunakan untuk memeriksa memori. Bukan yang paling ramah pengguna, tetapi setidaknya itu sudah diinstal sebagian besar tempat Anda akan pergi. Tampilan yang sangat berguna adalah tautan "heap histogram" di bagian paling bawah.
ex:
jhat -port 7401 -J-Xmx4G dump.hprof
jhat
dapat menjalankan OQL "hari ini" juga (tautan bawah "jalankan OQL")sumber
Anda juga dapat menggunakan HeapWalker dari Netbeans Profiler atau alat yang berdiri sendiri Visual VM . Visual VM adalah alternatif yang baik untuk JHAT karena itu berdiri sendiri, tetapi jauh lebih mudah digunakan daripada JHAT.
Anda memerlukan Java 6+ untuk sepenuhnya menggunakan Visual VM.
sumber
jvisualvm.exe
diJAVASDK/bin
folderDapatkan saja Eclipse Memory Analyzer . Tidak ada yang lebih baik di luar sana dan gratis.
JHAT hanya dapat digunakan untuk "aplikasi mainan"
sumber
YourKit Java Profiler tampaknya juga menangani mereka.
sumber
Jika Anda ingin melakukan analisis kustom heapdump Anda, maka ada:
Pustaka ini cepat tetapi Anda harus menulis kode analisis di Jawa.
Dari dokumen:
sumber
Saya pribadi lebih suka VisualVM. Salah satu fitur yang saya suka di VisualVM adalah perbandingan heap dump. Ketika Anda melakukan heap dump analysis ada berbagai cara untuk mencari tahu apa yang menyebabkan crash. Salah satu cara yang menurut saya bermanfaat adalah melakukan perbandingan timbunan timbunan yang sehat dan tidak sehat.
Berikut ini adalah langkah-langkah yang dapat Anda ikuti untuk itu:
tautan: https://visualvm.github.io
sumber