Maison  >  Article  >  Java  >  Analyse détaillée de la mémoire tas et de la mémoire pile en Java

Analyse détaillée de la mémoire tas et de la mémoire pile en Java

王林
王林avant
2019-12-26 17:40:252348parcourir

Analyse détaillée de la mémoire tas et de la mémoire pile en Java

1. Présentation

En Java, il existe deux types de mémoire, l'une est la mémoire de pile et l'autre est la mémoire de tas.

2. Mémoire de tas

1. Qu'est-ce que la mémoire de tas ?

La mémoire tas est un type de mémoire Java. Elle est utilisée pour stocker des objets et des tableaux en Java. Lorsque nous créons un nouvel objet ou créons un tableau, une section de mémoire tas sera ouverte. stockage.

2. Quelles sont les caractéristiques de la mémoire tas ?

Le premier point : le tas peut en fait être considéré comme un pipeline, ou il est similaire à la situation de faire la queue pour acheter des billets, donc les caractéristiques de la mémoire du tas sont : premier entré, premier sorti, dernier entré, dernier sorti, c'est-à-dire que vous faites la queue en premier, d'accord, vous achetez le billet en premier.

Deuxième point : le tas peut allouer dynamiquement la taille de la mémoire, et la durée de vie n'a pas besoin d'être indiquée au compilateur à l'avance, car il alloue la mémoire dynamiquement au moment de l'exécution, mais l'inconvénient est que puisque la mémoire doit être dynamiquement allouée au moment de l'exécution, la vitesse d'accès est plus lente.

3. Comment le nouvel objet est-il alloué dans le tas ?

est géré par le garbage collector automatique de la machine virtuelle Java.

Partage de didacticiels vidéo gratuits : Tutoriel vidéo Java

3. Mémoire de pile

1. Qu'est-ce que la mémoire de pile

Mémoire de pile Il s'agit d'un autre type de mémoire en Java, principalement utilisé pour exécuter des programmes, tels que les variables de type de base et les variables de référence d'objet.

2. Caractéristiques de la mémoire de pile

Premier point : La mémoire de pile est comme une bouteille d'eau minérale. Si vous y mettez quelque chose, la première chose que vous y mettrez coulera au fond, donc. ses caractéristiques sont : : Premier entré, dernier sorti, dernier entré, premier sorti

Deuxième point : La vitesse d'accès est plus rapide que le tas, juste derrière le registre. Les données de la pile peuvent être partagées, mais l'inconvénient est que. la taille et la durée de vie des données stockées dans la pile doivent être certaines et manquent de flexibilité

3. Mécanisme d'allocation de mémoire de pile

La mémoire de pile peut être appelée cache de premier niveau et est automatiquement recyclé par le garbage collector

4. Partage de données

Exemple :

int a = 3;
int b = 3;

Étape 1 :

1 Le compilateur traite d'abord int a = 3;

2. Créez une référence à la variable a

3. Recherchez dans la pile s'il y a une valeur de 3

4 Si elle n'est pas trouvée, stockez 3 et a. pointe vers 3

Traitement de la deuxième étape :

1. Processus b=3

2 Créez une référence à la variable b

3. attribuez-le directement

La troisième étape change :

Suivant

a = 4;

Même méthode que ci-dessus

La valeur de a change, a pointe à 4, et la valeur de b ne changera pas.

PS : S'il y a deux objets, c'est différent. Les objets pointent vers la même référence. Si l'un change, l'autre changera aussi.

4. La différence entre la pile et le tas

JVM est une machine virtuelle basée sur une pile qui alloue une pile pour chaque thread nouvellement créé. Autrement dit, pour un programme Java, son fonctionnement se termine par l’exploitation de la pile. La pile enregistre l'état du thread dans des frames. La JVM n'effectue que deux opérations sur la pile : les opérations push et pop en unités de trame.

Différences :

1. La mémoire tas est utilisée pour stocker les objets et les tableaux créés par new.

2. La mémoire de pile est utilisée pour stocker des méthodes ou des variables locales, etc.

3. La pile est premier entré, premier sorti, dernier entré, dernier sorti.

4. La pile est la dernière entrée, la première sortie, la première entrée, la dernière sortie.

Mêmes points :

1. Ils sont tous deux un type de mémoire Java.

2. Le système le recyclera automatiquement, mais pour la mémoire tas, les développeurs le recycleront généralement automatiquement.

Plus d'articles et de tutoriels connexes à partager : Démarrer avec Java à partir de zéro

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Que sont les constantes Java ?Article suivant:Que sont les constantes Java ?