Différence entre javacore, thread dump et heap dump dans Websphere

Quelqu'un peut-il me dire la différence exacte entre javacore, thread dump et heap dump? Dans quelle situation chacun de ces éléments est-il utilisé??

44
demandé sur S.L. Barth 2009-08-19 18:55:56

5 réponses

un dump de fil est un dump des piles de tous les fils vivants. Ainsi utile pour analyser ce qu'une application est jusqu'à à à un moment donné dans le temps, et si fait à intervalles pratiques pour diagnostiquer certains types de problèmes "d'exécution" (par exemple fil de blocage).

un tas dump est un tas de l'état de la mémoire Java heap. Ainsi utile pour analyser ce que l'utilisation de la mémoire une application fait à un moment donné si pratique dans le diagnostic de certains problèmes de mémoire, et si fait à intervalles pratique dans le diagnostic de la mémoire fuite.

C'est ce qu'ils sont en termes "bruts", et pourraient être fournis de plusieurs façons. En général utilisé pour décrire les fichiers JVMs et les serveurs app, et sous cette forme ils sont un outil de bas niveau. Utile si pour une raison quelconque, vous ne pouvez pas obtenir autre chose, mais vous trouverez la vie plus facile en utilisant l'outil de profilage décent pour obtenir similaire mais plus facile à disséquer l'information.

en ce qui concerne WebSphere un fichier javacore est un thread dump, mais avec beaucoup d'autres informations telles que les serrures et des classes chargées et des informations limitées sur l'utilisation de la mémoire, et un fichier PHD est un tas de données.

si vous voulez lire un fichier javacore vous pouvez le faire à la main, mais il y a un outil IBM (BM Thread and Monitor Dump Analyzer) qui le rend plus simple. Si vous voulez lire un fichier dump tas, vous avez besoin de L'un des nombreux outils D'IBM: MDD4J ou Analyseur de tas.

47
répondu Jason 2010-08-31 10:40:32

Tas dumps chaque fois que vous souhaitez voir ce qui est conservé dans la mémoire des erreurs hors de la mémoire Les décharges de tas-image d'objets en mémoire - utilisé pour l'analyse de la mémoire Java Core - également connu sous le nom dethread décharges ou Java dumps, utilisé pour visualiser l'activité du thread à l'intérieur de la JVM à un moment donné. IBM javacores devrait beaucoup d'informations supplémentaires en plus des fils et des piles utilisés pour déterminer les crochets, les blocages et les raisons de la dégradation des performances Système noyaux

1
répondu 2009-08-25 11:32:27

un dump de Thread est un dump de toutes les traces de pile de threads, i.e. comme si chaque Thread soudainement jeté une Exception et printstacktrace'e cela. C'est ainsi que vous pouvez voir ce que chaque fil fait à un point spécifique, et est par exemple très bon pour attraper des blocages.

un dump tas est un" dump binaire " de la mémoire complète que le JVM utilise, et est par exemple utile si vous avez besoin de savoir pourquoi vous êtes à court de mémoire - dans le dump tas vous pouvez par exemple voir que vous avez un milliards d'objets utilisateurs, même si vous ne devriez avoir que mille, ce qui indique un problème de mémorisation.

1
répondu stolsvik 2009-11-26 13:51:04

JVM head dump est un instantané d'une mémoire tas JVM dans un temps donné. Il s'agit donc simplement d'une représentation en tas de la JVM. C'est l'état des objets.

JVM thread dump est un instantané d'un thread JVM à un moment donné. C'est donc ce que les threads faisaient à un moment donné. C'est l'état de threads. Cela aide à comprendre les fils verrouillés, les fils suspendus et les fils en cours d'exécution.

Head dump contient plus d'informations sur les informations de classe java qu'un thread dump. Par exemple Head dump est bon pour analyser les problèmes de mémoire JVM heap et les erreurs OutOfMemoryError. JVM head dump est généré automatiquement quand il ya quelque chose comme OutOfMemoryError a eu lieu. Le dump tas peut être créé manuellement en tuant le processus à l'aide de kill -3 . Générer un dump tas est une tâche de calcul intensif, qui va probablement suspendre votre jvm. donc itsn pas un methond à utiliser offetenly. Le tas peut être analysé à l'aide d'outils tels que l'analyseur de mémoire eclipse.

vidage du cœur est une utilisation de mémoire de niveau os des objets. Il a plus de détails que d'une tête de vidage. core dump n'est pas créé quand on tue un processus exprès.

1
répondu Nu-ONE 2017-08-13 06:10:04

les dumps de Thread sont javacore show snapshot de threads courant dans JVM, il est utile de déboguer les problèmes de hang, il fournira des informations sur java level Dead locks et aussi la version IBm de javacores fournit des informations beaucoup plus utiles, telles que l'utilisation de tas, L'utilisation CPU de chaque thread et l'utilisation globale de tas ainsi que le nombre de classes laded par la JVM.

Heapdumps, fournit des informations sur L'utilisation de Java heap par une JVM, qui peut être utilisé pour déboguer les fuites de mémoire. Les empilements sont générés par JVM IBM lorsqu'une JVM est exécutée sur outofmemoryerror, Heapdumps sont uniquement pour les fuites tas en java, natif hors de l'erreur de mémoire peut entraîner des dumps système généralement avec un "GPF" défaut de protection générale.

0
répondu Krishna Jaladhi 2016-02-08 13:49:03