Di Java, longgokan timbunan memberikan gambaran keseluruhan objek yang terdapat dalam ingatan Mesin Maya Java pada masa tertentu. Longgokan timbunan berguna dalam menyelesaikan masalah kebocoran memori dan pengoptimuman penggunaan memori dalam aplikasi java yang berbeza. Butiran setiap kejadian seperti alamat, nama kelas, jenis, rujukan kepada objek lain dicatatkan dalam longgokan timbunan. Heap dump mempunyai dua format, seperti format Portable Heap Dump, format binari dan klasik dalam teks asci. Dalam bahagian di bawah, mari kita lihat alatan dan teknik yang berbeza untuk menjana longgokan timbunan.
Mulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Biasanya, longgokan timbunan ini digunakan dalam aplikasi Java yang kami gunakan mengambil memori lebih daripada yang kami jangkakan, atau aplikasi ranap dengan OutOfMemoryError. Jika kita menganalisis longgokan timbunan, ia akan membantu mengenal pasti punca anomali. Di samping itu, longgokan timbunan juga boleh digunakan untuk mengenal pasti butiran seperti penggunaan memori setiap kelas, kiraan objek dalam setiap kelas, dll. Selain itu, butiran halus boleh ditangkap dan jumlah memori yang diambil oleh individu Objek Java yang terdapat dalam aplikasi juga boleh didapati. Maklumat ini boleh membantu kami mengenal pasti kod sebenar yang menyebabkan masalah kebocoran memori.
Berikut ialah alatan dan teknik berikut yang disebut di bawah
Heap Dumps boleh ditangkap menggunakan alatan berbeza di bawah JDK, yang tersedia dalam folder bin dalam direktori utama JDK. Untuk ini, baris arahan boleh digunakan kerana direktori terdapat dalam laluan sistem.
jmap ialah alat yang boleh digunakan dalam proses tempatan serta jauh yang mencetak statistik memori dalam JVM yang sedang berjalan.
Untuk menjana longgokan timbunan dengan jmap, pilihan longgokan boleh digunakan seperti yang ditunjukkan di bawah.
jmap -dump:[live] , format = b , file=< path of the file > <process id>
jcmd ialah alat yang menghantar permintaan arahan ke Mesin Maya Java. Selain itu, ini perlu ada dalam mesin tempat proses Java sedang berjalan.
Untuk mendapatkan heap dump, arahan GC.heap_dump boleh digunakan di mana laluan pid dan fail output hanya perlu disebut, seperti ditunjukkan di bawah.
jcmd < pid > GC.heap_dump < path of the file >
JVisualVM ialah alat yang mempunyai antara muka pengguna grafik yang mudah dan intuitif yang membenarkan kami memantau, menyelesaikan masalah dan memprofilkan aplikasi Java. Untuk menjana longgokan timbunan menggunakan ini, proses Java perlu diklik kanan, dan pilihan "Timbunan Longgokan" perlu dipilih. Setelah ini selesai, alat itu akan membuat longgokan timbunan dan ia akan dibuka dalam tab baharu.
Daripada menggunakan teknik manual seperti yang dinyatakan di atas, pilihan baris perintah, HeapDumpOnOutOfMemoryError, digunakan untuk mencipta timbunan secara automatik apabila java.lang.OutOfMemoryError dilemparkan:
java - XX:+HeapDumpOnOutOfMemoryError
java_pid
Daripada laluan lalai, laluan fail lain juga boleh digunakan, dan untuk itu, pilihan HeapDumpPath boleh digunakan, seperti yang ditunjukkan di bawah.
java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=< file_path >
Jadi, apabila aplikasi menjalankan gangguan memori menggunakan cara ini, log boleh dilihat dalam fail yang dibuat yang terdiri daripada longgokan timbunan:
Dalam hal ini, HotSpotDiagnostic MBean digunakan yang menghasilkan teknik dumpHeap yang membenarkan 2 parameter.
Mereka ialah:
outputFile, iaitu laluan fail untuk dump yang dibuat. Pastikan fail tersebut harus mempunyai sambungan hprof.
langsung, yang serupa dengan yang ada dalam jmap. Objek dengan rujukan aktif sahaja akan dicetak jika ini ditetapkan
Mari kita lihat dua teknik berbeza untuk menggunakan kaedah ini untuk menangkap longgokan timbunan.
Pelanggan JMX seperti JConsole ialah cara paling mudah untuk menggunakan HotSpotDiagnostic MBean. Jika JConsole dibuka dan disambungkan kepada proses Java yang sedang berjalan, menavigasi ke tab MBeans dan mengenal pasti kehadiran HotSpotDiagnostic di bawah com.sun.management. Di dalam operasi, kaedah dumpHeap yang dijelaskan sebelum ini boleh ditemui. Untuk melaksanakan operasi dumpHeap, parameter outputFail dan hidup sebagai medan teks p0 & p1.
Sama seperti JConsole, HotSpotDiagnostic MBean boleh digunakan dengan menggunakan ia melalui program daripada kod Java. Untuk itu, contoh MBeanServer perlu mendapatkan MBean didaftarkan dalam aplikasi. Setelah ini selesai, tika HotSpotDiagnosticMXBean diperlukan dan kaedah dumpHeap bagi tika itu perlu dipanggil.
Andaikan aplikasi yang anda gunakan berjalan pada Pelayan Aplikasi IBM Websphere; konsol pentadbiran boleh menjana timbunan. Pertama, dalam anak tetingkap navigasi konsol pentadbiran, pilih Penyelesaian masalah dan pilih pembuangan dan teras Java. Setelah ini selesai, pilih nama_server untuk nama yang perlu membuat longgokan timbunan. Selepas itu, Klik Longgokan longgokan untuk membuat longgokan longgokan untuk pelayan yang disebutkan. wsadmin juga boleh digunakan untuk membuat longgokan timbunan.
Atas ialah kandungan terperinci Tempat pembuangan timbunan Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!