Maison >Java >javaDidacticiel >Tutoriel sur l'algorithme de récupération de place des fonctionnalités avancées de la JVM

Tutoriel sur l'algorithme de récupération de place des fonctionnalités avancées de la JVM

巴扎黑
巴扎黑original
2017-06-26 11:41:531099parcourir

1. Algorithme de marquage

L'algorithme de marquage est l'algorithme de collecte le plus basique. Le processus d'exécution est le même que son nom. est divisé en deux étapes : marquer et effacer

Marquez d'abord les objets qui doivent être recyclés. Une fois le marquage terminé, les objets marqués seront recyclés uniformément, comme le montre la figure ci-dessous .

Pour une introduction au processus de marquage spécifique, veuillez vous référer à « l'analyse d'accessibilité » dans l'article précédent sur la détermination de l'algorithme de survie des objets pour le garbage collection

   

Recyclage Etat précédent >

Inconvénients :

1. L'efficacité du marquage et du déblaiement n'est pas très élevée

2. Comme vous pouvez le voir sur le image, la mémoire après l'effacement Il y aura un grand nombre de fragments dans l'objet. L'inconvénient est que lors de l'allocation d'espace mémoire à des objets volumineux

 , cela peut avoir pour conséquence de ne pas pouvoir trouver un espace continu suffisamment grand. espace, provoquant un GC à l’avance.

2. Algorithme de copie

Le principe de l'algorithme de copie est de diviser l'espace mémoire en deux parties de la même taille. Lorsque le garbage collection est requis, copiez les objets survivants

dans la mémoire utilisée vers un autre morceau de mémoire, puis effacez le morceau de mémoire précédent. Comme le montre l'image ci-dessous

    

  

État avant recyclage

  

      

État du poste de recyclage

 

Avantages : L'algorithme de réplication est plus efficace

Inconvénients : Ceci L'espace sacrifié par le L'algorithme est plus grand. Après tout, l'espace mémoire utilisable est devenu la moitié de l'original

3. Algorithme de tri des marques

 

Il s'agit d'un algorithme couramment utilisé dans l'ancienne génération, car les objets de l'ancienne génération sont stockés longtemps.

Le processus de marquage de l'algorithme de marquage et de tri est le même que celui de l'algorithme de nettoyage des marques, mais les étapes suivantes sont différentes. L'algorithme de marquage et de tri déplace les objets survivants. à une extrémité,

Ensuite, nettoyez toute la mémoire de l'autre côté de la limite des survivants, comme indiqué ci-dessous

  État précédent

🎜>

4. Algorithme de collecte générationnelle

Les machines virtuelles actuelles utilisent toutes l'algorithme de collecte générationnelle . Cet algorithme divise la mémoire selon les différents cycles de survie des objets

Généralement, le tas Java est divisé en la nouvelle génération et l'ancienne génération

5. Utilisation de l'algorithme de la nouvelle génération

Dans les machines virtuelles commerciales, l'algorithme de réplication est utilisé pour récupérer la nouvelle génération. La raison en est que 98 %. des objets de la nouvelle génération ont une durée de survie très courte.

Par conséquent, il n'est pas nécessaire de diviser la mémoire en deux blocs de même taille, ne laissant qu'un espace plus petit pour copier les objets survivants. Par conséquent, la mémoire

est généralement divisée en une zone Eden plus grande et deux zones survivantes plus petites. Lors du recyclage, les objets survivants de la zone Eden et de la zone survivant sont copiés dans une autre zone

Dans la mémoire. zone des survivants, nettoyez Eden et le serviteur utilisé.

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
Article précédent:Tout en Java est un objetArticle suivant:Tout en Java est un objet