Les Java Dumps sont des cœurs Java qui sont créés par erreur lorsque la machine virtuelle s'arrête de manière inattendue en raison de problèmes de réseau, d'une erreur de mémoire ou lorsque l'utilisateur initie tout type de combinaison de touches. Un Java Dump peut être créé facilement soit en appelant l'API Java Dump incorporée dans le code source de l'application, soit en fournissant directement l'option -Xdump:java via la ligne de commande. Java Dump fournit une aide à l'utilisateur final en fournissant des informations utiles pour le dépannage et le diagnostic de la cause première de l'arrêt qui se produit lorsque l'application cesse de s'exécuter de manière inattendue.
Commencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
Syntaxe
Il n'y a pas de syntaxe spécifique pour les dumps Java car le besoin de dumps Java dépend de la cause première du problème, qui peut varier, comme mentionné. Ainsi, ce flux de syntaxe se produit lorsque l'utilisateur doit diagnostiquer la cause première et souhaite effectuer une analyse à l'aide des outils jcmd simplement en envoyant les requêtes requises à la JVM, et il est obligatoire d'utiliser le même système au moment de l'exécution que celui utilisé pour l'envoi. cette requête à la machine et au programme Java. Ainsi, la syntaxe est définie comme suit :
jcmd <process_ id> GC.heap_dump <pathname_for_file>
où se trouvent les paramètres passés :
Le workflow pour Java Dumps est très intéressant dans la mesure où il fournit une aide considérable à l'utilisateur final ou au programmeur au moment d'un crash de la machine ou de tout arrêt inattendu du système pour diverses raisons mentionnées comme une panne de réseau, erreur de mémoire, etc. De plus, toute forme d'erreur entravant l'exécution du programme Java peut être enregistrée en utilisant Java Dumps pour le dépannage et le diagnostic de la cause première. Il existe certains scénarios basés sur le fonctionnement des Dumps en Java :
Il existe différentes manières de capturer tous les scénarios et leur cause profonde en utilisant les outils et technologies de dumps Java. Ils sont très utiles pour résoudre les problèmes liés aux fuites de mémoire et aux problèmes d’optimisation de la mémoire. Ils sont principalement stockés au format binaire dans des fichiers hprof qui peuvent être visualisés et analysés à l'aide des outils et technologies suivants comme :
Cet exemple montre le thread effectuant un blocage sur les ressources, et maintenant qu'ils ont acquis les verrous sur les ressources, il existe une possibilité d'analyse de ce blocage sur les ressources avec Java Dumps en utilisant la commande dans la mention de la ligne de commande.
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."); } }
Sortie :
Comment obtenir le dump du code compilé ci-dessus, cela peut être fait en utilisant les commandes suivantes :
Jcmd<Process_id> GC.heap_dump <file-path> jcmd 20528 GC.heap_dump C:\Users\adutta\eclipse-workspace\Matcher_Example\src
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.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!