Waktu generasi
Saat program Java sedang berjalan, file JavaCore dan HeapDump terkadang dibuat. Hal ini biasanya terjadi ketika program Java mengalami masalah yang fatal.
Terkadang setelah terjadi masalah fatal, aplikasi Java tidak mati dan dapat terus berjalan;
Namun terkadang terjadi masalah fatal dan proses Java akan mati;
Untuk mempertahankan status aplikasi Java yang berjalan sebelum terjadi kesalahan fatal, JVM menghasilkan dua file sebelum mati, yaitu file JavaCore dan HeapDump.
Apa bedanya?
JavaCore tentang CPU, sedangkan file HeapDump tentang memori.
File JavaCore terutama menyimpan posisi berjalan setiap thread aplikasi Java pada saat tertentu, yaitu kelas mana, metode mana, dan baris mana yang dijalankan JVM. Ini adalah file teks. Setelah membukanya, Anda dapat melihat tumpukan eksekusi setiap utas dan menampilkannya sebagai jejak tumpukan. Dengan menganalisis file JavaCore, kita dapat mengetahui apakah aplikasi "macet" pada titik tertentu, yaitu terlalu lama dijalankan pada titik tertentu, seperti query database yang tidak mendapat respon dalam waktu lama. waktu, yang pada akhirnya menyebabkan kerusakan sistem.
File HeapDump adalah file biner yang menyimpan penggunaan objek di heap JVM pada waktu tertentu. File jenis ini memerlukan alat yang sesuai untuk dianalisis, seperti alat seperti IBM Heap Analyzer. Fungsi terpenting dari file jenis ini adalah untuk menganalisis apakah ada kelebihan memori di sistem.
Bagaimana cara menghasilkan
Kedua file ini dapat dibuat secara manual. Saat kita menghadapi situasi di mana sistem menjadi lambat atau tidak responsif, kita dapat membuat file JavaCore dan HeapDump secara manual.
Di Unix/Linux, cara menghasilkan kedua file ini adalah sebagai berikut:
# ps -ef |.grep java
pengguna 4616 4582 0 17:30 poin/0 00:00:00 grep java
root 5580 1 0 27 Okt ? 00:02:27 /usr/bin/java -server -XX:PermSize=64M -XX:MaxPermSize=128m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava. util.logging.config.file=/usr/local/Tomcat8090/conf/logging.properties -Djava.endorsed.dirs=/usr/local/Tomcat8090/endorsed -classpath :/usr/local/Tomcat8090/bin/bootstrap.jar -Dcatalina.base=/usr/local/Tomcat8090 -Dcatalina.home=/usr/local/tomcat8090 -Djava.io.tmpdir=/usr/local/tomcat8090/temp org.apache.catalina.startup.Bootstrap mulai
# bunuh -3 5580
Bagaimana menganalisis
berkas JavaCore
Kedua kumpulan file ini sangat efektif saat menganalisis JavaCore, karena dapat melihat posisi eksekusi thread pada dua titik waktu. Jika ditemukan bahwa thread yang sama dieksekusi pada posisi yang sama di dua kumpulan data, itu berarti mungkin ada masalah disini, karena program berjalan sangat cepat, jika pada titik tertentu dua kali berarti titik ini sangat memakan waktu. Dengan menganalisis kedua file ini kita dapat mengetahui penyebabnya dan menyelesaikannya masalahnya.
Ada tanda "Detail Thread Saat Ini" di header file JavaCore, yang mencatat ID thread dari sistem yang berjalan saat JavaCore dibuat. Gunakan ID thread untuk menemukan informasi detail thread dalam file kelas mana yang dijalankan thread dan menyebabkan JavaCore.
BATAL ------------------------------------------------- - -----------------------
Rutinitas dump subkomponen 0SECTION TITLE
BATAL ================
1TISIGINFOOUTOFMEMORY diterima
1TIDATETIME Tanggal: 2011/12/07 pukul 15:59:42
1TIFILENAME Nama file Javacore:/usr/WebSphere/AppServer/profiles/WCSProdNode2/javacore19202086.1323298782.txt
BATAL ------------------------------------------------- - -----------------------
0BAGIAN Rutin pembuangan subkomponen XHPI
BATAL ===============
1XHTIME Rabu 7 Des 15:59:42 2011
1XHSIGRECV Sinyal tak terduga -1 diterima pada 0x0 di <tidak diketahui>.
1XHFULLVERSION J2RE 1.4.2 IBM AIX build ca142ifx-20090918 (SR13 FP2)
BATAL
1XHCURRENTTHD Detail Thread Saat Ini
BATAL ---------------------------
2XHCURRSYSTHD "Kontainer Web: 5" sys_thread_t:0x45FB5328
3XHNATIVESTACK Tumpukan Asli
BATAL------------
3XHSTACKLINEERR tidak tersedia - alamat tumpukan tidak valid
:::
:::
Rutinitas dump subkomponen 0SECTION XM
BATAL ==============
BATAL
1XMCURTHDINFO Detail Thread Saat Ini
BATAL ---------------------------
3XMTHREADINFO "WebContainer : 5" (TID:0x70A8E260, sys_thread_t:0x45FB5328, status:R, ID asli:0x5CC0) prio=5
4XESTACKTRACE di org.apache.taglibs.standard.tag.common.core.ImportSupport$ImportResponseWrapper.getString (Sumber Tidak Dikenal)
4XESTACKTRACE di org.apache.taglibs.standard.tag.common.core.ImportSupport.acquireString (Sumber Tidak Dikenal)
4XESTACKTRACE di org.apache.taglibs.standard.tag.common.core.ImportSupport.doEndTag (Sumber Tidak Diketahui)
4XESTACKTRACE di com.ibm._jsp._part._jspx_meth_c_import_3(_part.java(Kode Terkompilasi))
4XESTACKTRACE di com.ibm._jsp._part._jspx_meth_c_otherwise_3(_part.java(Kode Terkompilasi))
4XESTACKTRACE di com.ibm._jsp._part._jspx_meth_c_choose_4(_part.java(Kode Terkompilasi))
4XESTACKTRACE di com.ibm._jsp._part._jspService(_part.java:3237)
berkas tumpukandump
File HeapDump adalah snapshot dari tumpukan Java pada waktu tertentu dan merupakan sejenis file gambar. Alat Heap Analyzer menganalisis file HeapDump untuk mengetahui objek mana yang menempati terlalu banyak ruang tumpukan untuk menemukan objek yang menyebabkan kebocoran memori atau mungkin menyebabkan kebocoran memori.