Quelqu'un peut-il me dire la différence exacte entre javacore, thread dump et heap dump? Dans quelle situation sont-ils utilisés?
Un vidage de threads est un vidage des piles de tous les threads actifs. Donc utile pour analyser ce qu’une application fait jusqu’à un moment donné, et si cela est fait à intervalles réguliers, utile pour diagnostiquer certains types de problèmes «d’exécution» (par exemple, un blocage du thread).
Un vidage de tas est un vidage de l'état de la mémoire de tas Java. Il est donc utile pour analyser l'utilisation de la mémoire par une application à un moment donné, si utile pour diagnostiquer certains problèmes de mémoire, et à intervalles réguliers, pour diagnostiquer les fuites de mémoire.
C’est ce qu’ils sont en termes «bruts» et pourraient être fournis de nombreuses manières. Utilisé en général pour décrire les fichiers vidés des machines virtuelles et des serveurs d’applications, il s’agit ici d’un outil de bas niveau. Utile si, pour une raison quelconque, vous ne pouvez obtenir rien d'autre, mais vous trouverez la vie plus facile en utilisant un outil de profilage décent pour obtenir des informations similaires mais plus facile pour disséquer les informations.
En ce qui concerne WebSphere, un fichier javacore est un vidage de thread, mais avec de nombreuses autres informations, telles que des verrous et des classes chargées, ainsi que des informations sur l’utilisation limitée de la mémoire. Un fichier PHD est un vidage de tas.
Si vous voulez lire un fichier javacore, vous pouvez le faire à la main, mais il existe un outil IBM (BM Thread et Monitor Dump Analyzer) qui le simplifie. Si vous souhaitez lire un fichier de tas, vous avez besoin d'un des nombreux outils IBM: MDD4J ou Heap Analyzer.
Un vidage de thread est un vidage des traces de pile de tous les threads, c'est-à-dire comme si chaque thread jetait soudainement une exception et printStackTrace'ed. Cela permet de voir ce que fait chaque thread à un moment donné, et est par exemple très utile pour attraper des impasses.
Un vidage de tas est un "vidage binaire" de la mémoire complète utilisée par la machine virtuelle, et est par exemple utile si vous avez besoin de savoir pourquoi vous manquez de mémoire - dans le vidage de tas, vous pouvez par exemple voir que vous disposez d'un milliard Les objets utilisateur, même si vous ne devez en avoir que mille, indiquent un problème de rétention de la mémoire.
Le vidage de la tête JVM est un instantané d'une mémoire de tas JVM à un moment donné. Il s’agit donc simplement d’une représentation en tas de la machine virtuelle Java. C'est l'état des objets.
Le vidage du thread JVM est un instantané d'un thread JVM à un moment donné. C'est donc ce que faisaient les threads à un moment donné. C'est l'état de threads. Cela aide à comprendre des threads verrouillés, suspendus et en cours d'exécution.
Le vidage de la tête contient plus d'informations sur les informations de niveau de classe Java qu'un vidage de thread. Par exemple, le vidage de la tête est utile pour analyser les problèmes de mémoire heap de la JVM et les erreurs OutOfMemoryError. Le vidage de la tête JVM est généré automatiquement quand quelque chose comme OutOfMemoryError a eu lieu. Le vidage de tas peut être créé manuellement en tuant le processus en utilisant kill -3. La génération d'un vidage de tas est une tâche informatique intensive, qui va probablement bloquer votre JVM. donc ce n'est pas un moyen d'utiliser offetenly. Le tas peut être analysé à l'aide d'outils tels que l'analyseur de mémoire Eclipse.
Le Core Dump est une utilisation de la mémoire des objets au niveau du système d'exploitation. Il contient plus d'informations qu'un dépotoir. Le core dump n'est pas créé lorsque nous supprimons un processus à dessein.
Heap dumps chaque fois que vous souhaitez voir ce qui est conservé en mémoire Erreurs de mémoire insuffisante Heap Dumps - Image des objets en mémoire - utilisée pour l'analyse de la mémoireCoeurs Java - également appelé thread dumps ou dumps Java, utilisés pour afficher l’activité du thread dans la machine virtuelle à un moment donné. Les javacores IBM devraient contenir beaucoup plus d'informations, outre les threads et les piles, utilisés pour déterminer les blocages, les blocages et les motifs de dégradation des performances Cœurs de système
Les dumps de threads sont un instantané javacore show des threads exécutés dans la JVM, il est utile de déboguer les problèmes de blocage, il fournira des informations sur les verrous mortes au niveau Java et la version IBm de javacores fournit des informations bien plus utiles, telles que utilisation des threads et du tas global avec le nombre de classes chargées par la machine virtuelle Java.
Heapdumps, fournit des informations sur l'utilisation du segment de mémoire Java par une machine virtuelle Java, qui peuvent être utilisées pour déboguer des fuites de mémoire. Les heapdumps sont générés par les machines JVM IBM lorsqu'une machine virtuelle Java s'exécute en out-of-mory-error. Les heapdumps ne concernent que les fuites de tas en Java. Une erreur de mémoire insuffisante peut entraîner des vidages système généralement associés à une erreur de protection générale "GPF".