Recientemente me preguntaba si hay algún inconveniente para Set<Weakref<T>>
sobre WeakSet<T>
.
Ventajas:
Contras:
¿Me estoy perdiendo algo o es casi una situación en la que todos ganan? ¿La versión Set<Weakref<T>>
evitaría que el recolector de basura recopile?
Que perdiste:
Los WeakSets son solo colecciones de objetos. No pueden contener valores arbitrarios de ningún tipo, como pueden hacer los conjuntos.
El número de objetos o su orden de recorrido es irrelevante, por lo que un WeakSet es más adecuado (y eficaz) que un Set para rastrear referencias de objetos, especialmente si se trata de una gran cantidad de objetos.
Set<Weakref<T>>
no evitará GC. También tenga en cuenta que WeakRef
no es compatible con Opera, pero WeakSet
sí lo es.