class ObjectSpace::WeakMap

Eine ObjectSpace::WeakMap ist eine Schlüssel-Wert-Zuordnung, die schwache Referenzen auf ihre Schlüssel und Werte speichert, sodass diese vom Garbage Collector (GC) eingesammelt werden können, wenn keine anderen Referenzen mehr auf sie verweisen.

Schlüssel in der Zuordnung werden über ihre Identität verglichen.

m = ObjectSpace::WeakMap.new
key1 = "foo"
val1 = Object.new
m[key1] = val1

key2 = "bar"
val2 = Object.new
m[key2] = val2

m[key1] #=> #<Object:0x0...>
m[key2] #=> #<Object:0x0...>

val1 = nil # remove the other reference to value
GC.start

m[key1] #=> nil
m.keys #=> ["bar"]

key2 = nil # remove the other reference to key
GC.start

m[key2] #=> nil
m.keys #=> []

(Beachten Sie, dass GC.start hier nur zu Demonstrationszwecken verwendet wird und möglicherweise nicht immer zu den gezeigten Ergebnissen führt.)

Siehe auch die Zuordnungsklasse ObjectSpace::WeakKeyMap, die Schlüssel nach Wert vergleicht und nur schwache Referenzen auf die Schlüssel hält.