Je sais qu'il y a WeakHashMap
en java.util
mais comme il utilise WeakReference
pour tout, qui n'est référencé que par cette Map
Les objets référencés seront perdus lors du prochain cycle GC. C'est donc presque inutile si vous voulez mettre en cache des données aléatoires, qui sont très susceptibles d'être demandées à nouveau sans être liées durablement le reste du temps. La meilleure solution serait une carte, qui utilise SoftReference
à la place, mais je n'en ai pas trouvé dans le paquet Java RT.
Une autre implémentation utile est celle d'OpenJDK. sun.security.util.Cache
qui supporte une taille maximale, une durée de vie limitée dans le temps, et un choix de références normales contre des SoftReferences. La version de Java 7 fait correspondre les objets aux objets ; la version de Java 8 est générique. Il est évident que nous ne devrions pas importer sun.
directement, mais le code est sous licence GPL et peut être copié si vous voulez un point de départ.