Rumah  >  Artikel  >  Java  >  Tempat pembuangan timbunan Jawa

Tempat pembuangan timbunan Jawa

WBOY
WBOYasal
2024-08-30 15:14:19784semak imbas

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

Format Longgokan Timbunan

  • Format Portable Heap Dump (PHD): Dalam format ini, fail dump terdiri daripada bahagian pengepala dan juga bahagian badan. Bahagian badan fail dump mengandungi butiran tentang objek, rekod kelas atau tatasusunan. Untuk menerangkan format fail, nombor primitif digunakan.
  • Format Longgokan Timbunan Klasik: Format longgokan ini dijana dalam teks ASCII pada hampir semua platform kecuali z / OS, yang dikodkan dalam EBCDIC.

Mengapa Heap dump digunakan, dan apakah kegunaannya?

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.

Alat dan Teknik

Berikut ialah alatan dan teknik berikut yang disebut di bawah

1. Alat JDK

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

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>
  • langsung: Parameter pilihan. Objek dengan rujukan aktif sahaja akan dicetak jika ini ditetapkan
  • format=b: Menyebut bahawa format fail dump akan dalam binari.
  • fail: Fail tempat pembuangan yang dibuat boleh ditulis kepada
  • PID: ID proses Java
  • jcmd

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

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.

2. Penciptaan automatik longgokan timbunan

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.hprof ialah fail yang menyimpan dump secara lalai dan ia tersedia dalam direktori tempat aplikasi dijalankan.

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:

3. JMX

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.

JConsole

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.

Kaedah berprogram

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.

4. Konsol Pentadbiran IBM

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Penukar JSFArtikel seterusnya:Penukar JSF