Quelle est la différence entre Java Non la Mémoire du Tas et de la Pile de la Mémoire? Sont-ils Même si pas quelle est la différence entre eux?
Je suis à l'aide de Jconsole pour la surveillance d'une Application Java. La mémoire onglet montre les différents Tas et Non Tas de souvenirs, comme
- Tas Utilisation De La Mémoire
- Non Tas Utilisation De La Mémoire
- Pool de mémoire "CMS Old Gen"
- Pool De Mémoire "Par Eden Espace"
- Pool De Mémoire "Par Survivant De L'Espace"
- Pool De Mémoire "Cache De Code"
- Pool de mémoire "CMS Perm Gen"
Quelle est la différence entre ces termes. Veuillez également fournir des informations concernant la façon de trouver des anomalies dans le comportement de l'application par la surveillance de ces paramètres.
double possible de Comment est la java pool de mémoire divisée?
Dup de stackoverflow.com/questions/1262328/...
Dup de stackoverflow.com/questions/1262328/...
OriginalL'auteur user2885295 | 2014-09-16
Vous devez vous connecter pour publier un commentaire.
Il existe essentiellement trois catégories de stockage dans tous les C-langages basés sur (et la plupart des autres langues):
Tas vous êtes familier avec.
Pile, vous êtes également familier avec, mais vous ne le sais pas. Lorsque vous avez une méthode de "local" des variables, ces variables sont affectées dans une "invocation cadre". "L'invocation de trame" est attribuée lorsque vous appelez la méthode et supprimés lorsque vous êtes de retour de la méthode, et par conséquent, il est plus efficace de mise en œuvre à l'aide d'une "pile" qui grandit avec l'appel et se rétrécit avec retour.
Statique est des trucs que vous n'avez pas explicitement allouer et existent essentiellement depuis le temps que l'exécution du programme commence.
L'espace requis pour la pile est généralement assez petites et sont mis dans le même panier "Non de Segment de Mémoire" dans les catégories ci-dessus.
Chaque fois que vous utilisez vous êtes à l'aide de tas.
OriginalL'auteur Hot Licks
Non-segment de mémoire est toute la mémoire de la JVM alloués à d'autres fins que le tas. Cela comprend:
Dans votre liste, "CMS Old Gen", "Par Eden de l'Espace", "Par Survivant de l'Espace", et "CMS Perm Gen", tous se réfèrent à différentes sections du tas.
OriginalL'auteur Marko Topolnik
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
Aussi, la JVM dispose d'une mémoire autre que dans le tas, appelées non-segment de mémoire. Il est créé au niveau de la JVM de démarrage et de magasins par classe de structures comme des constantes à l'exécution de la piscine, le terrain et les données de la méthode, et le code pour les méthodes et les constructeurs, ainsi que des internés des Chaînes.
Malheureusement, la seule information JVM fournit sur la non-mémoire du tas est sa taille globale. Aucune information détaillée sur la non-tas contenu de la mémoire est disponible.
La croissance anormale de la non-tas de la taille de la mémoire peut indiquer un problème potentiel, dans ce cas, vous pouvez vérifier les éléments suivants:
Si il y a chargement de classe questions telles que la fuite des chargeurs. Dans ce cas, le problème peut être résolu avec l'aide de la Classe chargeurs de vue.
Si il y a des chaînes massivement internés. Pour la détection de ce problème, Objet de répartition de l'enregistrement peut être utilisé.
OriginalL'auteur Ahmet Karakaya