


Java explique en détail le garbage collection et le cycle de vie des objets
Explication détaillée du garbage collection Java et du cycle de vie des objets
Garbage collection et cycle de vie des objets en Java
1 Garbage collection
Le garbage collection est la mémoire en Java. programmation Concept de base de la gestion, le mécanisme de gestion de la mémoire de la JVM est appelé mécanisme de récupération de place.
Après qu'un objet soit créé, il est placé dans la mémoire tas de la JVM. Lorsque cet objet n'est plus référencé, il sera recyclé par la JVM dans la mémoire tas. Les objets créés ne peuvent pas être reproduits et il n'existe aucun moyen de les publier via des instructions de programme. Autrement dit, lorsqu'un objet ne peut pas être atteint (trouvé) via la collection racine dans l'espace d'exécution JVM, l'objet est appelé un objet poubelle. La collection racine est composée de champs de référence statiques et de champs de référence locaux dans la classe. La JVM indexe les objets via la collection racine.
Lors du développement d'applications Java, deux types de mémoire gérés par la JVM sont souvent utilisés : la mémoire tas et la mémoire pile. En termes simples, la mémoire tas est principalement utilisée pour stocker des objets et des variables créés ou instanciés par le programme pendant l'exécution. Par exemple, les objets créés via le mot-clé new. La mémoire de pile est utilisée pour stocker les méthodes déclarées comme statiques ou non statiques dans le code du programme.
(1) Mémoire tas
La mémoire tas est créée au démarrage de la JVM. Les objets stockés dans la mémoire tas peuvent être automatiquement recyclés par la JVM et ne peuvent pas être recyclés par d'autres moyens externes. pour dire que les développeurs ne peuvent pas récupérer les objets dans la mémoire tas en ajoutant du code pertinent. La mémoire tas est généralement divisée en deux zones : la nouvelle zone d’objets et l’ancienne zone d’objets.
Nouvelle zone d'objet : Elle peut être subdivisée en trois petites zones : Zone Eden, Zone De et Zone Vers. La zone Eden est utilisée pour enregistrer les objets nouvellement créés. C'est comme une pile. De nouveaux objets sont créés au fur et à mesure que le pointeur vers la pile grandit. Lorsque les objets de la zone Eden sont pleins, le système JVM sera accessible. La tâche du test sexuel est de détecter quels objets sont inaccessibles depuis la collection racine. Ces objets peuvent être recyclés par la JVM, et tous les objets actifs sont copiés de la zone Eden vers la zone To. À ce stade, certains objets auront un état. Certains objets sont transférés de la zone À vers la zone De. À ce stade, la zone De contient des objets. L'ensemble du processus de migration d'objet ci-dessus est contrôlé par la JVM.
Ancienne zone d'objets : les objets de l'ancienne zone d'objets auront toujours un long cycle de vie. La plupart des objets indésirables du système JVM proviennent d'objets « de courte durée ». Après un certain temps, ce sont des objets transférés vers le. les anciennes zones d'objets deviennent des objets poubelles. À ce stade, ils sont tous marqués en conséquence et le système JVM recyclera automatiquement ces objets indésirables. Il est recommandé de ne pas forcer le système à effectuer fréquemment un garbage collection. En effet, la JVM utilisera des ressources système limitées pour effectuer le travail de garbage collection. d'abord, ce qui entraîne application L'incapacité de répondre rapidement aux demandes du côté utilisateur affectera les performances globales du système.
(2) Mémoire de pile
La mémoire tas est principalement utilisée pour stocker des objets et des variables créés ou instanciés par le programme pendant l'exécution. Par exemple, les objets créés via le mot-clé new. La mémoire de pile est utilisée pour stocker les méthodes déclarées comme statiques ou non statiques dans le code du programme.
2. Cycle de vie des objets dans JVM
Dans l'espace d'exécution JVM, l'ensemble du cycle de vie d'un objet peut être grossièrement divisé en 7 étapes :
Phase de création ;
Phase de candidature ;
Phase invisible ;
Phase inaccessible ;
Phase de collection ; >
Phase de sortie Les 7 étapes ci-dessus constituent le cycle de vie complet des objets dans la JVM. (1) Phase de création Dans la phase de création d'objet, le système termine principalement le processus de création d'objet à travers les étapes suivantes : <1> l'objet alloue de l'espace de stockage ; <2> Commencer à construire l'objet ; Appeler récursivement le constructeur de la super-classe
<5> est appelé.
Vous devez faire attention à plusieurs règles d'application clés lors de la création d'objets :
& lt; 2 & gt; essayez de faire en sorte que l'objet réponde à la norme de recyclage des déchets à temps. Par exemple monObjet = null.
L'accès aux variables locales est préférable à l'accès aux variables de la classe.
Lors de la phase de référence d'objet, l'objet présente les caractéristiques suivantes :
<1> Le système maintient au moins une référence forte (Strong Reference) de l'objet
import java.lang.ref.SoftReference; ... A a = new A(); ... // 使用a ... // 使用完了a, 将它设置为soft引用类型,并且释放强引用 SoftReference sr = new SoftReference(a); a = null; ... // 下次使用时 if (sr != null) { a = sr.get(); } else { // GC由于低内存,已释放a,因此需要重新装载 a = new A(); sr = new SoftReference(a); }
import java.lang.ref.WeakReference; ... A a = new A(); ... // 使用a ... // 使用完了a, 将它设置为Weak引用类型,并且释放强引用 WeakReference wr = new WeakReference(a); a = null; ... // 下次使用时 if (wr != null) { a = wr.get(); } else { a = new A(); wr = new WeakReference(a); }
visible.
try { Object localObj = new Object(); localObj.doSomething(); } catch (Exception e) { e.printStackTrace(); } if (true) { // 此区域中localObj 对象已经不可视了, 编译器会报错。 localObj.doSomething(); }

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





Dépannage et solutions au logiciel de sécurité de l'entreprise qui fait que certaines applications ne fonctionnent pas correctement. De nombreuses entreprises déploieront des logiciels de sécurité afin d'assurer la sécurité des réseaux internes. ...

Le traitement de la cartographie des champs dans l'amarrage du système rencontre souvent un problème difficile lors de l'exécution d'amarrage du système: comment cartographier efficacement les champs d'interface du système a ...

Lorsque vous utilisez MyBatis-Plus ou d'autres cadres ORM pour les opérations de base de données, il est souvent nécessaire de construire des conditions de requête en fonction du nom d'attribut de la classe d'entité. Si vous manuellement à chaque fois ...

Commencez le printemps à l'aide de la version IntelliJideaultimate ...

Solutions pour convertir les noms en nombres pour implémenter le tri dans de nombreux scénarios d'applications, les utilisateurs peuvent avoir besoin de trier en groupe, en particulier en un ...

Conversion des objets et des tableaux Java: Discussion approfondie des risques et des méthodes correctes de la conversion de type de distribution De nombreux débutants Java rencontreront la conversion d'un objet en un tableau ...

Comment convertir les noms en nombres pour implémenter le tri au sein des groupes? Lors du tri des utilisateurs en groupes, il est souvent nécessaire de convertir le nom de l'utilisateur en numéros afin qu'il puisse être différent ...

Lorsque vous utilisez TkMyBatis pour les requêtes de base de données, comment obtenir gracieusement les noms de variables de classe d'entité pour créer des conditions de requête est un problème courant. Cet article épinglera ...
