Une brève analyse du mécanisme de tas et de garbage collection
Dans cet article, nous nous concentrons principalement sur ces questions : Une fois le programme Java exécuté, quand les objets du tas seront-ils recyclés ? Comment recycler ?
Le tas est également appelé « tas GC ». Puisque les collectionneurs utilisent désormais essentiellement des algorithmes de collecte générationnelle, le tas Java peut également être subdivisé en : nouvelle génération et ancienne génération, Le rapport est de 1 : 2 ; pour être plus détaillé, la nouvelle génération est divisée en zone Eden et zone Survivant, et le rapport est de 8 : 1. La figure suivante montre la structure du tas :
L'allocation de mémoire pour les objets dans le tas est strictement réglementée, la stratégie est la suivante :
les objets allouent d'abord de la mémoire dans la zone Eden de nouvelle génération
Les objets volumineux entrent directement dans l'ancienne génération, principalement des chaînes longues et des tableaux qui nécessitent une grande quantité d'espace mémoire continu
objets survivant à long terme ; entrez dans l’ancienne génération. Lorsque la mémoire dans la zone Eden est insuffisante, la JVM lance un MinorGC et l'âge de l'objet est augmenté de un. L'âge par défaut de l'objet atteint 15 et entre dans l'âge ancien ; >Détermination dynamique de l'âge. La somme des tailles de tous les objets du même âge est supérieure à la moitié de l'espace Survivant. Les objets supérieurs ou égaux à cet âge entrent dans l'ancienne génération
Le GC nouvelle génération fait référence au GC mineur. La collecte des déchets est effectuée dans la nouvelle génération, fréquemment et rapidement. Le GC d'ancienne génération (Major GC/Full GC) effectue le garbage collection dans l'ancienne génération, généralement accompagné d'au moins un gc mineur. Lent. Le GC complet sera déclenché dans les situations suivantes :
Espace insuffisant dans l'ancienne génération
- Espace insuffisant dans la zone méthode
- Appelez System.gc(), il est recommandé que la JVM effectue un gc complet
Transfert long ; -terme objets survivants à l'ancienne génération, espace insuffisant
-
Il n'y a pas assez d'espace contigu alloué pour les gros objets ;
Il y a trop d'objets qui survivent à la collecte des ordures dans la nouvelle génération, et S1 ne peut pas les intégrer. L'espace garanti dans l'ancienne génération est insuffisant. L'espace garanti fait référence au fait que l'espace continu maximum disponible soit insuffisant. l'espace de l'ancienne génération est plus grand que l'espace total de tous les objets de la nouvelle génération. -
Presque tous les objets sont placés dans le tas, alors comment savoir si ces objets sont toujours utiles ? La JVM propose deux méthodes pour déterminer :
Méthode de comptage de références
: L'objet ajoute un compteur de référence. Chaque fois qu'il est référencé, la valeur du compteur augmente de un. Lorsque la référence devient invalide, la valeur du compteur diminue de un. Lorsque le nombre de références est de 0, cela signifie que l'objet n'est pas vivant. La méthode de comptage de références ne peut pas résoudre le problème de référence circulaire. Il existe des exemples détaillés dans le livre du professeur Zhou Zhipeng, qui sont relativement faciles à comprendre.Méthode d'analyse de l'accessibilité
- : En prenant l'objet "GC Roots" comme point de départ, tout comme le nœud racine d'un arbre, chercher vers le bas. Le chemin parcouru par la recherche est appelé chaîne de référence s'il n'y a pas de chaîne de référence depuis un objet jusqu'au départ. point de GC Roots, alors ceci L'objet est inaccessible et doit être recyclé. Les racines GC font référence aux objets référencés par la pile de machines virtuelles, aux objets référencés par la pile de méthodes locale, aux objets référencés par des propriétés statiques dans la zone de méthode et aux objets référencés par des constantes dans la zone de méthode.
Référence forte, objet neuf, l'éboueur ne le recyclera jamais
Références douces, la mémoire de ces objets sera recyclée avant que OMM n'apparaisse dans le système
-
Références faibles, dès que le ramasse-miettes le trouve lorsqu'il l'est ; fonctionne, il sera recyclé immédiatement ;
-
La référence factice est inutile et peut être recyclée à tout moment.
Nous savons déjà ce que L'objet est que le temps a été recyclé, alors comment le recycler ? Présentation des quatre algorithmes de collecte des déchets les plus couramment utilisés :
L'algorithme de collecte des ordures est une idée de recyclage de mémoire, et l'implémentation spécifique est un ramasse-miettes. Une brève introduction aux éboueurs couramment utilisés :
collecteur série en série. Fil unique, les autres travaux doivent être suspendus pendant la collecte des ordures. Copie pour les nouveaux étudiants, étiquetage pour les anciens. Simple et efficace
ParNouveau collecteur. Version multithread de la série ;
Parallel Scavenge collector, un collecteur multithread d'algorithme de copie. Faites attention au débit, au temps de code d'exécution du processeur / au temps total du processeur passé. Copie nouvelle génération, tri des marques ancienne génération
Série Ancien collector, version ancienne génération
Parallel Old collector, l'ancienne version de Parallel Scavenge
CMS collector, se concentrant sur la pause la plus courte ; Avec un collecteur simultané, le thread de garbage collection fonctionne (essentiellement) simultanément avec le thread utilisateur. Algorithme de marquage et de balayage
Pour plus de détails sur le éboueur, vous pouvez lire le livre de M. Zhou Zhipeng.
Tutoriel recommandé : "Tutoriel JS"
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Cet article vous donnera une compréhension approfondie du mécanisme de garbage collection en PHP. J'espère qu'il vous sera utile !

Le langage Go est un langage de programmation efficace, sûr et simultané. La conception du mécanisme de gestion de la mémoire et de garbage collection est également sa caractéristique unique. Cet article décryptera en profondeur le mécanisme de gestion de la mémoire et de garbage collection du langage Go. 1. Gestion de la mémoire Dans le langage Go, la gestion de la mémoire comprend deux aspects : l'allocation mémoire et la libération de mémoire. 1.1 Allocation de mémoire Dans le langage Go, nous allouons de la mémoire via les fonctions intégrées new et make. Parmi eux, new renvoie un pointeur vers la valeur zéro nouvellement allouée, tandis que make renvoie un type spécifié et sa longueur.

La gestion de la mémoire en Java implique un garbage collection, mais des problèmes peuvent toujours survenir. Les problèmes courants incluent les fuites de mémoire et la fragmentation de la mémoire. Les fuites de mémoire sont causées par des objets contenant des références qui ne sont plus nécessaires et peuvent être résolues en évitant les références circulaires, en utilisant des références faibles et en limitant la portée des variables. La fragmentation de la mémoire est provoquée par des allocations et des désallocations fréquentes et peut être résolue à l'aide de pools de mémoire, de pools d'objets volumineux et d'un garbage collection compact. Par exemple, l'utilisation de références faibles peut gérer les fuites de mémoire et garantir que le garbage collector récupère les objets lorsqu'ils ne sont plus nécessaires.

Compréhension approfondie des principes de développement sous-jacents de PHP : gestion de la mémoire et mécanisme de garbage collection Introduction : PHP, en tant que langage de programmation de haut niveau, est largement utilisé dans le développement Web. De nombreux développeurs sont familiers avec la syntaxe et les fonctionnalités de PHP, mais peuvent avoir relativement peu de compréhension des principes de développement sous-jacents de PHP. Cet article explorera en profondeur les mécanismes de gestion de la mémoire et de garbage collection dans les principes de développement sous-jacents de PHP pour aider les lecteurs à mieux comprendre le mécanisme de fonctionnement de PHP. 1. Gestion de la mémoire PHP Allocation et libération de la mémoire La gestion de la mémoire en PHP est gérée par le moteur Zend

Les types primitifs sont stockés sur la pile et les types de référence sont stockés sur le tas. JavaScript alloue automatiquement de la mémoire lorsque des variables (objets, chaînes, etc.) sont créées et les libère « automatiquement » lorsqu'elles ne sont pas utilisées. Le processus de libération est appelé garbage collection.

Grâce au mécanisme automatique de récupération de place de Python, il n'est pas nécessaire de libérer manuellement les objets lors de leur création en Python. Ceci est très convivial pour les développeurs et évite aux développeurs de se soucier de la gestion de la mémoire de bas niveau. Mais si vous ne comprenez pas son mécanisme de garbage collection, le code Python que vous écrivez sera souvent très inefficace.

Explorer le mécanisme de récupération de place et les fonctionnalités de gestion de la mémoire du langage Go Introduction : Avec le développement d'Internet, les développeurs ont des exigences de plus en plus élevées en matière de langages de programmation. En tant que langage compilé et typé statiquement, le langage Go a attiré beaucoup d'attention depuis sa création en raison de son mécanisme efficace de récupération de place et de ses fonctionnalités de gestion de la mémoire. Cet article vise à explorer en profondeur le mécanisme de garbage collection du langage Go et ses fonctionnalités de gestion de la mémoire, et à aider les lecteurs à mieux comprendre et utiliser ces fonctionnalités à travers des exemples de code spécifiques. 1. Mécanisme de collecte des déchets 1.1 Algorithme de marquage du langage Go

Analyse approfondie : L'évolution diversifiée du mécanisme de garbage collection JVM nécessite des exemples de code spécifiques 1. Introduction Avec le développement de l'informatique, le mécanisme de garbage collection joue un rôle vital dans la JVM (Java Virtual Machine). L'évolution diversifiée du mécanisme de récupération de place JVM vise à améliorer les performances et la gestion de la mémoire des programmes Java. Cet article fournira une analyse approfondie de l'évolution spécifique du mécanisme de récupération de place JVM et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre. 2. Principes de base du mécanisme de récupération de place pour expliquer le mécanisme de récupération de place JVM
