J'utilise Jconsole pour surveiller une Java. L'onglet mémoire affiche différentes mémoires Heap et Non Heap comme
Quelle est la différence entre ces termes. Veuillez également fournir des informations sur - comment trouver des anomalies dans le comportement de l'application en surveillant ces paramètres.
Il existe essentiellement trois catégories de stockage dans tous les langages basés sur C (et la plupart des autres langages):
Tas que vous connaissez.
Stack que vous connaissez également, mais vous ne le savez tout simplement pas. Lorsque vous avez une méthode avec des variables "locales", ces variables sont allouées dans un "cadre d'invocation". Le "cadre d'invocation" est alloué lorsque vous appelez la méthode et supprimé lorsque vous revenez de la méthode, et donc il est plus efficacement mis en œuvre en utilisant une "pile" qui grandit avec l'appel et se rétrécit avec le retour.
Statique est une substance que vous n'affectez pas explicitement et qui existe essentiellement à partir du moment où l'exécution du programme commence.
L'espace requis pour la pile est généralement assez petit et est regroupé avec "Non Heap Memory" dans les catégories ci-dessus.
La mémoire autre que le tas est toute la mémoire allouée par la JVM à des fins autres que le tas. Ceci comprend:
Dans votre liste, "CMS Old Gen", "Par Eden Space", "Par Survivor Space" et "CMS Perm Gen", tous se réfèrent à différentes sections du tas.
Veuillez suivre les liens http://www.yourkit.com/docs/kb/sizes.jsp et http://publib.boulder.ibm.com/infocenter/javasdk/v5r0 /index.jsp?topic=%2Fcom.ibm.Java.doc.diagnostics.50%2Fdiag%2Fproblem_determination%2Faix_mem_heaps.html
Non-tas En outre, la JVM a une mémoire autre que le tas, appelée mémoire non-tas. Il est créé au démarrage de la JVM et stocke les structures par classe telles que le pool de constantes d'exécution, les données de champ et de méthode, ainsi que le code des méthodes et des constructeurs, ainsi que les chaînes internes.
Malheureusement, la seule information que JVM fournit sur la mémoire non tas est sa taille globale. Aucune information détaillée sur le contenu de la mémoire autre que le tas n'est disponible.
La croissance anormale de la taille de la mémoire non-tas peut indiquer un problème potentiel, dans ce cas, vous pouvez vérifier les éléments suivants:
S'il y a des problèmes de chargement de classe tels que des chargeurs qui ont fui. Dans ce cas, le problème peut être résolu à l'aide de la vue Chargeurs de classe. S'il y a des chaînes qui sont massivement internées. Pour la détection d'un tel problème, l'enregistrement d'allocation d'objet peut être utilisé.