4520 shaares
1 résultat
taggé
garbage-collector
Je résume l'idée :
- Créer plein de petites instances immutables est plus coûteux que d'en réutiliser une mutable.
- Mais il ne peut pas avoir de graphes d'instanciations entre les anciennes et les nouvelles instances, avec une programmation totalement immutable (puisque les anciennes n'étant jamais modifiées, elles ne pointeront jamais vers les nouvelles).
- De ce fait les temps de garbage collection sont bien plus courts.
Donc nous perdons du temps de calcul pendant l'instanciation pour en récupérer une partie durant la garbage collection.
Pour allier le meilleur des deux mondes, il faut utiliser des objets immutables tout le temps, sauf dans un seul cas de figure qui répond aux contraintes suivantes :
- Je dois modifier beaucoup de fois le même objet immutable avant d'obtenir son état final.
- Je vais donc passer par un objet mutable pour le construire.
- Cet objet mutable doit être instancié et garbage collecté dans la même méthode.
Par exemple, utiliser un StringBuilder pour créer une String immutable en Java (et ne pas partager ce StringBuilder avec un tiers ou encore le mettre en attribut).