Maison  >  Article  >  Java  >  15.Bases de Java - Tas et pile

15.Bases de Java - Tas et pile

黄舟
黄舟original
2017-02-27 10:55:591253parcourir

Concepts de base

En Java, il existe six endroits différents où les données peuvent être stockées.


1. Le registre

est le registre C'est la zone de stockage la plus rapide car elle est située à l'intérieur du processeur. ne peut pas contrôler.


2. La pile

est une pile située dans la RAM à usage général. Il est juste derrière les registres en termes de vitesse de stockage. Aiguille.

Il présente les caractéristiques suivantes :

  • Contrôlez la mémoire via le pointeur de pile. Si vous descendez, une nouvelle mémoire est allouée ; si vous montez, cette mémoire est libérée. Ainsi, lors de la création d'un programme, le compilateur Java doit connaître la taille exacte et la durée de vie de toutes les données stockées sur la pile, car il doit générer le code approprié pour déplacer le pointeur de la pile de haut en bas

  • La mémoire de la pile appartient à un seul thread. Chaque thread aura une mémoire de pile et les variables qu'il stocke ne peuvent être visibles que dans le thread auquel il appartient. Autrement dit, la mémoire de pile peut être comprise comme la mémoire privée du thread.

  • Partage de données en pile.

  • stocke les références aux types de base de données variables, d'objets ou de tableaux . Mais l'objet lui-même n'est pas stocké sur la pile, mais est stocké sur le tas (objets créés par new) ou dans le pool constant (les objets constants de chaîne sont stockés dans le pool constant).

  • A une règle FILO premier entré, dernier sorti.


3. Le tas

est le tas est un pool de mémoire à usage général (existe également en RAM). Utilisé pour stocker tous les objets Java. En termes simples, il s'agit de stocker tous les nouveaux objets.

La différence entre le tas et la pile est qu'il offre une grande flexibilité lors de l'allocation du stockage, mais cela prend également plus de temps. Parce que :

  • Le compilateur n'a pas besoin de savoir quelle quantité de zone de stockage allouer à partir du tas.

  • Le compilateur n'a pas non plus besoin de savoir combien de temps les données stockées vivent dans le tas.

Lorsque vous devez créer un objet, il vous suffit d'écrire une simple ligne de code ; lorsque cette ligne de code est exécutée, le stockage sera automatiquement alloué dans le tas.


4. La zone de méthode

est utilisée pour stocker les informations de classe chargées, les constantes, les variables statiques et le code compilé par le compilateur juste à temps.


5. Pool constant

Le pool constant fait partie de la zone méthode.

Stocke les constantes de chaîne et les variables de type de base, telles que String str="www". En fait, « www » est dans le pool constant.

Les 8 types de base de Java (Byte, Short, Integer, Long, Character, Boolean, Float, Double À l'exception de Float et Double, les six autres types implémentent tous des pools constants, mais ils ne sont que dans (-). 128 <= value<=127) utilise le pool constant. Au-delà de cette plage, le pool de constantes ne sera pas utilisé et les objets seront créés directement dans la mémoire tas.

Concepts de base

En Java, il existe six emplacements différents où les données peuvent être stockées.


1. Le registre

est le registre C'est la zone de stockage la plus rapide car elle est située à l'intérieur du processeur. ne peut pas contrôler.


2. La pile

est une pile située dans la RAM à usage général. Il est juste derrière les registres en termes de vitesse de stockage. Aiguille.

Il présente les caractéristiques suivantes :

  • Contrôlez la mémoire via le pointeur de pile. Si vous descendez, une nouvelle mémoire est allouée ; si vous montez, cette mémoire est libérée. Ainsi, lors de la création d'un programme, le compilateur Java doit connaître la taille exacte et la durée de vie de toutes les données stockées sur la pile, car il doit générer le code approprié pour déplacer le pointeur de la pile de haut en bas

  • La mémoire de la pile appartient à un seul thread. Chaque thread aura une mémoire de pile et les variables qu'il stocke ne peuvent être visibles que dans le thread auquel il appartient. Autrement dit, la mémoire de pile peut être comprise comme la mémoire privée du thread.

  • Partage de données en pile.

  • stocke les références aux types de base de données variables, d'objets ou de tableaux . Mais l'objet lui-même n'est pas stocké sur la pile, mais est stocké sur le tas (objets créés par new) ou dans le pool constant (les objets constants de chaîne sont stockés dans le pool constant).

  • A une règle FILO premier entré, dernier sorti.


3. Le tas

est le tas est un pool de mémoire à usage général (existe également en RAM). Utilisé pour stocker tous les objets Java. En termes simples, il s'agit de stocker tous les nouveaux objets.

La différence entre le tas et la pile est qu'il offre une grande flexibilité dans l'allocation du stockage, mais cela prend également plus de temps. Parce que :

  • Le compilateur n'a pas besoin de savoir quelle quantité de zone de stockage allouer à partir du tas.

  • Le compilateur n'a pas non plus besoin de savoir combien de temps les données stockées vivent dans le tas.

Lorsque vous devez créer un objet, il vous suffit d'écrire une simple ligne de code ; lorsque cette ligne de code est exécutée, le stockage sera automatiquement alloué dans le tas.


4. La zone de méthode

est utilisée pour stocker les informations de classe chargées, les constantes, les variables statiques et le code compilé par le compilateur juste à temps.


5. Pool constant

Le pool constant fait partie de la zone méthode.

Stocke les constantes de chaîne et les variables de type de base, telles que String str="www". En fait, « www » est dans le pool constant.

Les 8 types de base de Java (Byte, Short, Integer, Long, Character, Boolean, Float, Double À l'exception de Float et Double, les six autres types implémentent tous des pools constants, mais ils ne sont que dans (-). 128 <= value<=127) utilise le pool constant. Au-delà de cette plage, le pool de constantes ne sera pas utilisé et les objets seront créés directement dans la mémoire tas.

Ce qui précède est le contenu de 15.Java Basics - Heap & Stack. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


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