Est-ce que l'implémentation du pool de mémoire String de Java suit le modèle flyweight? Pourquoi j'ai ce doute, je vois qu'il n'y a pas d'état extrinsèque impliqué dans Intern. Dans GoF, j'ai lu qu'il devrait y avoir un bon équilibre entre l'état intrinsèque et extrinsèque. Mais en interne tout est intrinsèque. Ou devons-nous dire qu'il n'y a pas de règle stricte en ce qui concerne les attributs et juste partager des objets pour réduire la mémoire est suffisant pour l'appeler un poids mouche.Est-ce que Java's String Intern est un poids mouche?
S'il vous plaît aidez-moi à comprendre.
maintien de l'état intrinsèque dans un objet mouche et transmission d'informations d'état extrinsèque - devons-nous nous en préoccuper? Parce que dans le livre GoF, je vois plus d'importance attachée à la séparation intrinsèque/extrinsèque. Ici, en char [] flyweight, qu'est-ce qui est intrinsèque et extrinsèque? –
C'est simple - 'char []' est entièrement intrinsèque, et la chaîne que l'objet représente est entièrement extrinsèque. En utilisant une chaîne, vous ne savez même pas que le 'char []' existe. –
L'implémentation de HotSpot change finalement pour utiliser une longueur précise 'char []' (ou vraisemblablement 'byte []') sans champs de décalage et de longueur. Vraiment avoir le 'char []' comme une allocation distincte devrait être éliminé aussi bien. –