1. Référence forte
Nous créons généralement un nouvel objet avec une référence forte, comme
Object obj = new Object();
Même en cas de mémoire insuffisante, la JVM préfère que lancer une erreur OutOfMemory ne récupère pas un tel objet.
(Tutoriel vidéo recommandé : Tutoriel vidéo Java)
2. Référence logicielle
Si un objet n'a qu'une référence logicielle, la mémoire S'il y a suffisamment d'espace, le garbage collector ne le récupérera pas ; si l'espace mémoire est insuffisant, la mémoire de ces objets sera récupérée.
SoftReference<String> softRef=new SoftReference<String>(str); // 软引用
Utilisation :
Les références logicielles ont des applications importantes en pratique, comme le bouton retour du navigateur. Lorsque vous appuyez en arrière, le contenu de la page Web affichée lorsque vous revenez en arrière sera-t-il de nouveau demandé ou récupéré du cache ? Cela dépend de la stratégie de mise en œuvre spécifique.
(1) Si une page Web recycle son contenu à la fin de la navigation, elle devra être reconstruite lorsque vous appuyez en arrière pour afficher la page précédemment consultée.
(2) Si vous stockez les pages Web consultées en mémoire, cela entraînera beaucoup de gaspillage de mémoire, voire provoquera un débordement de mémoire.
Le code suivant :
Browser prev = new Browser(); // 获取页面进行浏览 SoftReference sr = new SoftReference(prev); // 浏览完毕后置为软引用 if(sr.get()!=null){ rev = (Browser) sr.get(); // 还没有被回收器回收,直接获取 }else{ prev = new Browser(); // 由于内存吃紧,所以对软引用的对象回收了 sr = new SoftReference(prev); // 重新构建 }
Tutoriels associés recommandés : Java Quick Start
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!