Saya diberitahu bahwa saya dapat menambahkan -XX:+HeapDumpOnOutOfMemoryError
parameter ke opsi start up JVM saya ke skrip start up JBoss saya untuk mendapatkan heap dump ketika kita mendapatkan kesalahan memori di aplikasi kita. Saya bertanya-tanya di mana data ini dibuang? Apakah hanya untuk konsol, atau untuk beberapa file log? Jika hanya untuk konsol, bagaimana jika saya tidak masuk ke server Unix melalui konsol?
java
jboss
memory-leaks
heap
Dmitry Trunov
sumber
sumber
Jawaban:
Inilah yang dikatakan dokumentasi Oracle :
sumber
HeapDumpPath
, Anda akan melihat sesuatu yang mirip dengan"Unable to create /tmp/java_pidpid.hprof: File exists"
standar keluar Anda. Pastikan untuk memindahkan file dump Anda keluar dari jalur dump untuk menghapus jalan bagi file dump masa depan; dan memanfaatkan<pid>
placeholder dalam nama file untuk meningkatkan entropi dalam nama file.Anda dapat melihat dump ini dari konsol UNIX.
Path untuk heap dump akan diberikan sebagai variabel tepat setelah Anda menempatkan variabel yang disebutkan.
Misalnya:
Anda dapat melihat dump dari konsol di jalur yang disebutkan.
sumber
Saya merasa sulit untuk menguraikan apa yang dimaksud dengan "direktori kerja VM". Dalam contoh saya, saya menggunakan program Java Service Wrapper untuk menjalankan toples - file dump dibuat di direktori tempat saya meletakkan program wrapper, misalnya c: \ myapp \ bin. Alasan saya menemukan ini adalah karena file-file dapat cukup besar dan mereka mengisi hard drive sebelum saya menemukan lokasi mereka.
sumber
Jika Anda tidak menggunakan opsi "-XX: HeapDumpPath" maka dalam kasus JBoss EAP / As secara default file dump tumpukan akan dihasilkan dalam direktori "JBOSS_HOME / bin".
sumber