Rumah  >  Artikel  >  Java  >  Tempat pembuangan Java

Tempat pembuangan Java

PHPz
PHPzasal
2024-08-30 15:09:571023semak imbas

Java Dumps ialah beberapa teras Java yang tersalah cipta apabila Mesin Maya terhenti secara tidak dijangka disebabkan isu rangkaian, Ralat memori atau apabila pengguna memulakan sebarang jenis kombinasi ketukan kekunci. Java Dump boleh dibuat dengan mudah sama ada dengan memanggil Java Dump API yang dimasukkan ke dalam kod sumber aplikasi atau dengan menyediakan terus pilihan -Xdump:java melalui baris arahan. Java Dump menyediakan bantuan kepada pengguna akhir dengan menyediakan beberapa maklumat berguna untuk menyelesaikan masalah dan mendiagnosis punca penghentian yang berlaku apabila aplikasi berhenti berjalan tanpa diduga.

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Sintaks

Tiada sintaks khusus untuk pembuangan Java kerana keperluan untuk pembuangan java bergantung pada punca masalah, yang boleh diubah, seperti yang dinyatakan. Jadi, aliran sintaks ini ialah apabila pengguna perlu mendiagnosis punca utama dan ingin melakukan analisis menggunakan alat jcmd hanya dengan menghantar permintaan yang diperlukan kepada JVM, dan adalah wajib untuk menggunakan sistem yang sama pada masa jalan yang digunakan untuk penghantaran permintaan ini kepada mesin dan program Java. Jadi, Sintaks ditakrifkan seperti berikut:

jcmd <process_ id> GC.heap_dump <pathname_for_file>

di mana parameter yang diluluskan adalah :

: Ia digunakan untuk menyediakan id untuk proses yang sedang dilaksanakan dengan program java.

: Nama laluan yang fail akan dihantar seperti yang dinyatakan.

Bagaimanakah pembuangan sampah berfungsi di Jawa?

Aliran Kerja untuk Java Dumps sangat menarik dengan fakta bahawa ia memberikan bantuan besar kepada pengguna akhir atau pengaturcara semasa mesin mengalami kemalangan atau sebarang penghentian yang tidak dijangka dalam sistem disebabkan oleh pelbagai sebab yang disebut seperti gangguan rangkaian, ralat ingatan, dsb. Tambahan pula, sebarang bentuk ralat yang menghalang pelaksanaan program Java boleh disimpan dengan menggunakan java Dumps untuk penyelesaian masalah dan diagnosis punca punca. Terdapat beberapa senario berdasarkan tempat Dumps dalam Java berfungsi  iaitu seperti berikut :

  • Senario di mana aplikasi Java mungkin telah ranap disebabkan kerosakan perlindungan umum dan secara automatik menjana fail dump java. Untuk mengatasi dan memahami punca, amat diperlukan untuk memahami jenis benang atau mengetahui dengan betul benang semasa dalam pelaksanaan untuk mengenal pasti masalah dengan mudah.
  • Senario lain mungkin disebabkan oleh timbunan Java kehabisan memori yang turut menjana pembuangan Java secara automatik.
  • Senario mungkin disebabkan oleh situasi kebuntuan di mana semua utas menyasarkan untuk memperoleh utas yang sama sebagai sumber pada masa yang sama.
  • Mungkin terdapat kes hang secara tiba-tiba juga di mana pengguna mungkin telah menjalankan kombinasi ketukan kekunci.
  • Terdapat beberapa cara untuk menjaga senario di atas, yang bermaksud untuk mencari punca utama dan untuk menangkap pengecualian, yang termasuk banyak alat Java Dumps yang telah menyediakan keupayaan untuk memudahkan dan fleksibiliti kepada pengguna akhir dari segi penyahpepijatan dan penyelesaian masalah pada masa ranap sistem segera atau situasi lain yang tidak begitu digemari seperti peristiwa berhenti atau OutOfMemory.

Terdapat cara berbeza untuk menangkap semua senario dan puncanya dengan menggunakan alatan dan teknologi Java dumps. Ia sangat berguna dalam menyelesaikan masalah berkaitan kebocoran memori dan masalah pengoptimuman memori. Ia kebanyakannya disimpan dalam format binari dalam fail hprof yang boleh divisualisasikan dan dianalisis menggunakan alat dan teknologi berikut seperti :

  • Menggunakan alatan JDK seperti jmap dengan menyediakan Id proses yang betul dan penggabungan laluan fail kepada alatan.
  • Menggunakan jcmd, yang bertanggungjawab untuk membuat permintaan dan respons, menyediakan JVM apabila mesin yang sama dalam JVM digunakan untuk head dump untuk membaca punca dan pengakuan.
  • JVisualVM juga merupakan alat sebagai sebahagian daripada JDK, yang digunakan untuk meningkatkan dan menyediakan bantuan untuk meneliti pembuangan java dengan mudah.
  • Ia juga mungkin untuk menangkap Dump secara automatik dan memprogramkan dan kemudian mendapatkan output yang sewajarnya.

Contoh pembuangan Java

Contoh Ini Menunjukkan utas yang melakukan kebuntuan pada sumber, dan sekarang mereka telah memperoleh kunci pada sumber, terdapat kemungkinan analisis kebuntuan ini pada sumber dengan Java Dumps menggunakan arahan dalam sebutan baris arahan.

public class Java_lock_Dump_Demo {
public static void main(String[] args) throws InterruptedException {
Object ob_a = new Object();
Object ob_b = new Object();
Object ob_c = new Object();
Thread Java_lock_Dump_DemoThread1 = new Thread (new       Java_lock_Dump_Demo_Sync_Thread(ob_a, ob_b ), "Java_lock_Dump_DemoThread1");
Thread Java_lock_Dump_DemoThread2 = new Thread (new Java_lock_Dump_Demo_Sync_Thread(ob_b, ob_c ), "Java_lock_Dump_DemoThread2");
Thread Java_lock_Dump_DemoThread3 = new Thread (new Java_lock_Dump_Demo_Sync_Thread(ob_c, ob_a ), "Java_lock_Dump_DemoThread3");
Java_lock_Dump_DemoThread1.start();
Thread.sleep(3000);
Java_lock_Dump_DemoThread2.start();
Thread.sleep(3000);
Java_lock_Dump_DemoThread3.start();
}
}
class Java_lock_Dump_Demo_Sync_Thread implements Runnable {
private Object ob_a;
private Object ob_b;
public Java_lock_Dump_Demo_Sync_Thread(Object ob_a, Object ob_b) {
this.ob_a = ob_a;
this.ob_b = ob_b;
}
@Override
public void run() {
String nm = Thread.currentThread().getName();
synchronized (ob_a) {
System.out.println(nm + " acquire_the_lock_on_first_resource " + ob_a);
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (ob_b) {
System.out.println(nm + " acquire_the_lock_on_second_resource " + ob_b);
}
System.out.println(nm + " Release_the_lock_for_second_object " + ob_b);
}
System.out.println(nm + " Release_the_lock_for_first_object " + ob_a);
System.out.println(nm + " Completed with the deadlock_test for acquiring the resource.");
}
}

Output:

Tempat pembuangan Java

Bagaimana untuk mendapatkan pembuangan kod yang disusun di atas ia boleh dilakukan menggunakan arahan berikut :

  • First, retrieve the process id using the following command in the command line: jsp
  • Then, after getting the process id run the following command in the command line :
Jcmd<Process_id> GC.heap_dump <file-path>
jcmd 20528 GC.heap_dump C:\Users\adutta\eclipse-workspace\Matcher_Example\src

Conclusion

Java Dumps is considered a very interesting feature in java as It provides programmers and users with the ability to get out of the unwanted and unexpected situations at the time of halt in the running program as well as when the machine goes out of memory space. It also provides the user with detailed and proper content for the root cause or the troubleshooting issue.

Atas ialah kandungan terperinci Tempat pembuangan Java. 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:Java asyncArtikel seterusnya:Java async