252 votes

Comment le pool de mémoire de java est divisé ?

Je suis suivi actuellement une application Java avec jconsole. L’onglet mémoire vous permet de choisir entre :

Quelle est la différence entre eux ?

358voto

dfa Points 54490

La mémoire du tas

La mémoire de masse est le moteur d'exécution zone de données à partir de laquelle la machine virtuelle Java alloue de la mémoire pour toutes les instances de classe et les tableaux. Le tas peut être fixe ou variable taille. Le garbage collector est une gestion automatique de la mémoire système qui libère de la mémoire dans la mémoire pour les objets.

  • Eden de l'Espace: La piscine à partir de laquelle la mémoire est initialement allouée pour la plupart des objets.

  • Survivant de l'Espace: La piscine contenant des objets qui ont survécu à la collecte des ordures de l'Eden de l'espace.

  • Permanent de la Génération: La piscine contenant des objets qui ont existé pendant un certain temps dans le survivant de l'espace.

Non la mémoire du tas

Non-segment de mémoire comprend une méthode de la zone partagée entre tous les threads et la mémoire nécessaire pour le traitement interne ou d'optimisation pour la machine virtuelle Java. Il enregistre par la structure de classe comme une constante d'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. La méthode de la zone est logiquement partie du tas, mais, en fonction de la mise en œuvre, une machine virtuelle Java peut ne pas collecter les ordures ou compact. Comme la mémoire de masse, la méthode de la zone peut être fixe ou variable taille. La mémoire de la méthode ne doit pas être contigus.

  • Génération permanente: La piscine contenant toutes les réflexions sur les données de la machine virtuelle elle-même, telles que la classe et de la méthode des objets. Avec les machines virtuelles Java qui utilise la classe de partage de données, cette génération est divisé en lecture seule et en lecture-écriture domaines.

  • Cache de Code: Le point de connexion de la machine virtuelle Java comprend également un cache de code, contenant de la mémoire qui est utilisée pour la compilation et le stockage du code natif.

Voici de la documentation sur la façon d'utiliser Jconsole.

35voto

user2767149 Points 41

Avec Java8, région de tas non pas plus contient PermGen mais Metaspace, qui est un changement majeur en Java8, censé pour se débarrasser des erreurs de mémoire avec java comme metaspace taille peut être augmentée en fonction de l’espace requis par la jvm pour les données de la classe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X