I think items (keys and values) in a WeakHashMap are removed from the map when the key is no longer referenced outside the map. The value then eligible for garbage collection only if it is not referenced elsewhere (perhaps by another key in the map). I've not had an occasion in which I knew needed WeakHashMap yet, so there is a chance I don't have this right. I suspect WeakHashMap may be useful when a subsystem needs to provide a handle by which other subsystems can refer to an object. The handle could be key in a WeakHashMap. When no other subsystem (and nothing besides the WeakHashMap) contains a reference to a particular key, that key and its value are removed from the map. At that point, if nothing else refers to the value object, the value object is unreferenced and hence eligable for garbage collection.