[Newbies] What is a "weak" reference

Randal L. Schwartz merlyn at stonehenge.com
Tue Jul 15 15:12:26 UTC 2008


>>>>> "Herbert" == Herbert König <herbertkoenig at gmx.net> writes:

Herbert> Hello cdrick,
c> All that sounds like "don't use weak reference" :)

Herbert> .... unless you know exactly what you are doing.

One possible use I haven't seen in this thread is to "keep notes" on a class
you don't own (and don't want to change), without preventing them from being
GC'ed normally.

For example, if I wanted to write a system watcher that noticed the comings
and goings of Process objects, I'd likely keep a Dictionary keyed by the
Process instance referencing the data of start times.  However, I wouldn't
want that key to keep the Process instance from being gc'ed, so I'd use a weak
dictionary.  This is how the classic "dependents" system works as well: the
dependencies are in a WeakDictionary so that when the watched object goes
away, the dependencies are also cleaned.

The alternative is to add a set of properties to the Process that others can
stuff information, so that "Process allInstances" can get my process watcher
what it needs instead.

-- 
Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777 0095
<merlyn at stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
See http://methodsandmessages.vox.com/ for Smalltalk and Seaside discussion


More information about the Beginners mailing list