J'ai un cache construit à partir d'un Map vers SoftReferences. Quand ils sont ajoutés, ils sont placés dans une autre file d'attente pour être compressés par gzip ou quelque chose comme ça. Mon idée est la suivante: je veux avoir WeakReferences pour les objets dans la file d'attente compressée, de sorte que lorsque la tâche compresseur arrive à l'objet, si elle est déjà partie, nous n'avons pas besoin de la compresser. Ne gardez pas les objets vivants qui seraient autrement GC'd. Donc s'il y a exactement un SoftReference et un WeakReference, la sémantique de SoftReference s'applique-t-elle encore?GC va-t-il collecter un objet référencé par un SoftReference et un WeakReference?
Répondre
Oui, la sémantique de SoftReferences s'applique toujours: SoftReferences est plus forte que WeakReferences.
Les références faibles sont fondamentalement traitées comme non existantes pour le GC. Ainsi, un objet qui n'est que faiblement accessible peut être GCed immédiatement. Les objets accessibles seulement par un SoftReferences comme le type le plus fort, cependant, sont seulement considérés pour GCing si les demandes sur la mémoire doivent être comblées. Donc, s'il y a des références faibles et faibles, la sémantique de SoftReference est appliquée.
objets de référence faibles, qui ne empêchent d'être leurs referents fait finalisables, finalisé, puis remis en état .
http://download.oracle.com/javase/6/docs/api/java/lang/ref/WeakReference.html
objets de référence souples qui sont effacés à la discrétion du collecteur d'ordures en réponse à la demande de mémoire . Les références logicielles sont utilisées le plus souvent pour implémenter caches sensibles à la mémoire.
http://download.oracle.com/javase/6/docs/api/java/lang/ref/SoftReference.html
oui, il n'y a pas de problème à GC l'objet qui a autant de références douces/faibles que vous voulez, jusqu'à ce qu'il ait une référence forte presque.
Vous devriez remarquer que Weak Reference
collecter toujours avant Soft Reference
. Et Soft Reference
souvent utiliser pour mettre en cache quelque chose. Cela veut dire: à ce moment-là, il n'a plus besoin de survivre, mais, parfois, dans le futur, peut-être vous en aurez besoin, et Java ne fonctionnera plus pour l'exemple d'un nouvel objet.
- 1. non référencé objet Thread disposer
- 2. Comment indiquer au GC de nettoyer également un objet incorporé?
- 3. Comment fonctionne Object.GetHashCode lorsque le GC déplace un objet?
- 4. objet Domaine référencé par deux racines globales
- 5. Le GC .NET gâchera-t-il un objet abandonné en exécutant une méthode de façon asynchrone?
- 6. Dans NHibernate (Fluent), comment mapper une propriété sur un objet référencé dans un objet parent?
- 7. Aide pour un comportement GC GC vraiment bizarre
- 8. Comment savoir si un objet est déjà référencé?
- 9. Puis-je savoir si un objet est référencé?
- 10. Comment faire un système référencé et récompensé par un ami en php?
- 11. ADO.Net Entity Framework Un objet entité ne peut pas être référencé par plusieurs instances de IEntityChangeTracker
- 12. Erreur: « Un objet entité ne peut pas être référencé par plusieurs instances de IEntityChangeTracker »
- 13. Association d'un objet à un autre objet pour la correction GC
- 14. Rechercher un objet par étiquette
- 15. Différence entre un objet et un hachage?
- 16. android déterminer objet libéré GC
- 17. Un liner: gestionnaire d'événements WeakReference-to-a-Lambda
- 18. Trouver et déplacer un objet dans un tableau javascript par l'ID d'un objet
- 19. WeakReference Bug?
- 20. FileNotFoundException levé pour un assembly référencé
- 21. NHibernate - comment obtenir un élément non référencé par un élément dans une autre table
- 22. GC contient beaucoup d'objets épinglés après un certain temps
- 23. Clé composite sur un tableau auto-référencé
- 24. Implémentation de WeakReference dans .NET
- 25. L'utilisation d'un ModelBinder pour obtenir un objet par un ID
- 26. Quelle est la différence entre un objet modèle MVC, un objet de domaine et un DTO
- 27. UITableView crée par programme un objet délégué?
- 28. Passer un objet par référence dans C++
- 29. Créer un objet JavaScript de chaînes séparées par un astérisque
- 30. php Trier un objet par deux critères?
GCC? Je pense que vous voulez simplement dire GC, quand la plupart des gens voient GCC, ils pensent à la collection du compilateur Gnu. – mikerobi
ha ha, je veux dire que. Il est tard; Merci. – gubby