Différence entre javacore, dump de thread et vidage de tas dans Websphere

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

Un vidage de thread est un vidage des stacks de tous les threads en direct. Donc utile pour parsingr ce que fait une application à un moment donné, et si elle est effectuée à intervalles réguliers pour diagnostiquer certains types de problèmes d’exécution (par exemple, un blocage de thread).

Un vidage de tas est un vidage de l’état de la mémoire de segment de mémoire Java. Aussi utile pour parsingr l’utilisation de la mémoire par une application à un moment donné, si utile pour diagnostiquer certains problèmes de mémoire, et si elle est effectuée à intervalles réguliers pour diagnostiquer les memory leaks.

C’est ce qu’ils sont en termes «bruts» et pourraient être fournis de plusieurs manières. En général, utilisé pour décrire les fichiers sauvegardés à partir de JVM et de serveurs d’applications, et sous cette forme, ils constituent un outil de bas niveau. Utile si pour une raison quelconque vous ne pouvez rien obtenir d’autre, mais vous trouverez la vie plus facile en utilisant un outil de profilage décent pour obtenir des informations similaires mais plus faciles à disséquer.

En ce qui concerne WebSphere, un fichier javacore est un fichier de vidage de thread, mais avec beaucoup d’autres informations telles que des verrous et des classes chargées et des informations d’utilisation limitée de la mémoire, et un fichier PHD est un vidage de tas.

Si vous voulez lire un fichier javacore, vous pouvez le faire manuellement, mais il existe un outil IBM (BM Thread et Monitor Dump Analyzer) qui le simplifie. Si vous voulez lire un fichier de vidage de tas, vous avez besoin d’un des nombreux outils IBM: MDD4J ou Heap Analyzer.

Dépots de mémoire à chaque fois que vous souhaitez voir ce qui est stocké dans la mémoire Erreurs de mémoire insuffisante Dumps tas – image des objects en mémoire – utilisés pour l’parsing de la mémoire Cœurs Java – également connus sous le nom de dump threads à l’intérieur de la JVM à un moment donné. Outre les threads et les stacks, les javacores IBM devraient contenir beaucoup d’informations supplémentaires, utilisées pour déterminer les blocages, les blocages et les raisons de la dégradation des performances.

Un vidage de thread est un vidage de toutes les traces de stack des threads, c’est-à-dire comme si chaque thread lançait soudainement une exception et printStackTrace’ed. C’est pour que vous puissiez voir ce que chaque thread fait à un moment donné, et c’est très bien pour attraper les impasses.

Un vidage de tas est un “vidage binary” de la mémoire complète utilisée par la JVM, et est par exemple utile si vous avez besoin de savoir pourquoi vous manquez de mémoire – dans le vidage du tas, vous pourriez par exemple voir un milliard Les objects utilisateur, même si vous ne devez en avoir que mille, indiquent un problème de rétention de mémoire.

Le vidage de la tête de la machine virtuelle Java est un instantané d’une mémoire de segment de mémoire JVM à un moment donné. Donc, c’est simplement une représentation de tas de JVM. C’est l’état des objects.

JVM thread dump est un instantané d’un thread JVM à un moment donné. Alors, qu’est-ce que les threads faisaient à un moment donné? C’est l’état des threads. Cela facilite la compréhension, par exemple les threads verrouillés, les fils suspendus et les threads en cours d’exécution.

Head Dump a plus d’informations sur les informations de niveau de classe Java qu’un vidage de thread. Par exemple, Head Dump permet d’parsingr les problèmes de mémoire de tas de JVM et les erreurs OutOfMemoryError. Le vidage de la tête de la JVM est généré automatiquement lorsque quelque chose comme OutOfMemoryError a eu lieu. Le vidage du tas peut être créé manuellement en supprimant le processus à l’aide de kill -3. Générer un vidage de tas est une tâche de calcul intensive, qui accrochera probablement votre jvm. donc ce n’est pas un methond à utiliser normalement. Le tas peut être analysé à l’aide d’outils tels que l’parsingur de mémoire à éclipse.

Core dump est une utilisation de mémoire de niveau os des objects. Il a plus d’informations qu’un vidage de la tête. core dump n’est pas créé lorsque nous tuons un processus à dessein.

Les dumps de threads sont javacore show snapshot des threads en cours d’exécution dans JVM, il est utile de déboguer les problèmes de blocage, il fournira des informations sur les verrous morts au niveau java et la version IBm de javacores fournit des informations beaucoup plus utiles utilisation du thread et du tas global avec le nombre de classes classées par la JVM.

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 les memory leaks. Les sauts de mémoire sont générés par les machines virtuelles Java lorsqu’une machine virtuelle Java est exécutée dans une erreur de mémoire, les erreurs de mémoire ne sont que des memory leaks dans Java, les erreurs de mémoire natives pouvant entraîner une défaillance de protection générale.