J'ai un grand nombre de paires nom-valeur (environ 100k) que je dois stocker dans une sorte de cache (disons une carte de hachage) où la valeur est une chaîne avec une taille moyenne d'environ 30 000 octets.Optimiser l'utilisation de la mémoire d'une collection de chaînes en Java
Maintenant, je sais pertinemment qu'un grand nombre de valeurs ont exactement les mêmes données de chaîne. Afin d'éviter d'avoir à allouer plusieurs fois les mêmes chaînes de caractères, j'aimerais réutiliser une chaîne précédemment allouée et donc consommer moins de mémoire. En outre, cela doit être raisonnablement rapide. c'est-à-dire que le balayage de toutes les valeurs précédemment attribuées, une par une, n'est pas une option.
Des recommandations sur la façon dont je pourrais résoudre ce problème?
james? comme dans JT? – kdgregory
oui, c'est JT. trop drôle que j'ai écrit votre code pour vous. – james
Non, c'est un conseil très mauvais. La plupart de ces commentaires renvoient à des problèmes plutôt anciens pour les JVM obsolètes. Il n'y a absolument aucun problème avec String.intern() pour les chaînes partagées à vie longue. Beaucoup moins que les problèmes avec les remplacements de roulis. – StaxMan