Les variables de la boucle seront-elles recyclées après chaque boucle
Par exemple
for (int i=0;i<1000000;i++){
Date date=new Date();
}
Cette date n'est pas référencée, les poubelles seront-elles collectées ? Que se passe-t-il si l'objet créé est référencé ?
Le GC de Java comprend YGC et FGC.
L'objet date qui n'est pas référencé ici sera certes recyclé, mais pas après chaque cycle.
Le timing de GC n'est pas forcément lié à l'exécution de votre code.
Pour des connaissances connexes, vous pouvez Baidu télécharger Java GC
La réponse à cette question réside dans les circonstances dans lesquelles le mécanisme de garbage collection de la jvm effectuera le garbage collection.
Le rôle des variables locales est {}, c'est-à-dire que la date n'est pas référencée. Lorsque le garbage collection est effectué, la date ici sera recyclée.
Un nouvel objet est stocké dans le tas et l'objet nouvellement créé est stocké dans la zone eden. Ce n'est que lorsque la zone eden est pleine que le Monitor GC sera déclenché pour le recyclage.
Vous pouvez ajouter
-XX:+PrintGCDetails
aux paramètres d'exécution pour observer la situation du recyclage du GC.