Maison  >  Article  >  Java  >  La différence entre pile et tas en Java

La différence entre pile et tas en Java

(*-*)浩
(*-*)浩original
2019-11-11 09:54:343769parcourir

La différence entre pile et tas en Java

Avant de parler du tas et de la pile, parlons de la division de la mémoire JVM (machine virtuelle) : (Apprentissage recommandé : cours java )

Les programmes Java doivent allouer de l'espace lorsqu'ils sont en cours d'exécution. Tout logiciel doit allouer de l'espace dans la mémoire lorsqu'il est en cours d'exécution. La machine virtuelle Java doit également allouer de l'espace lorsqu'elle est en cours d'exécution.

La JVM ouvre une zone mémoire dans la mémoire lorsqu'elle est en cours d'exécution et la divise plus soigneusement dans sa propre zone mémoire lorsqu'elle démarre, car chaque morceau de mémoire de la machine virtuelle est traité de manière différente. , il doit être géré séparément.

La mémoire JVM est divisée en cinq parties :

1. Registre

2. Zone de méthode ;

4. Mémoire de pile ;

5.

Concentrons-nous sur le tas et la pile :

Mémoire de pile :

La mémoire de pile est avant tout une zone mémoire, qui stocke les variables locales. , tout ce qui est défini dans la méthode est une variable locale (les éléments en dehors de la méthode sont des variables globales), et les variables définies à l'intérieur de la boucle for sont également des variables locales. La fonction doit d'abord être chargée avant que la variable locale puisse être définie, donc la méthode. empile d'abord la pile, puis définit les variables. Les variables ont leur propre portée et sont libérées une fois qu'elles quittent la portée. La mémoire de la pile est mise à jour très rapidement car le cycle de vie des variables locales est très court.

Mémoire du tas :

stocke les tableaux et les objets (en fait, les tableaux sont des objets). Tout ce qui est créé par new est dans le tas, et les entités (objets) sont stockées dans le tas. est utilisé pour encapsuler des données, et il encapsule plusieurs (plusieurs attributs d'une entité). Si une donnée disparaît, l'entité ne disparaît pas et peut toujours être utilisée, donc le tas ne sera libéré à aucun moment, mais la pile est différente. . sont toutes des variables uniques. Une fois les variables publiées, elles disparaissent. Bien que les entités du tas ne soient pas libérées, elles seront traitées comme des déchets. Java dispose d'un mécanisme de récupération de place pour les collecter de temps en temps.

La différence entre le tas et la pile :

1. La mémoire de pile stocke les variables locales tandis que la mémoire de tas stocke les entités ;

2. La vitesse de mise à jour de la mémoire de pile est plus rapide que celle de la mémoire tas, car le cycle de vie des variables locales est très court ;

3. dans la mémoire de la pile est une fois. Il sera libéré une fois terminé et les entités stockées dans la mémoire tas seront recyclées par le mécanisme de récupération de place de temps en temps.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn