// Create the weak map
Map weakMap = new WeakHashMap();
// Add a key to the weak map
weakMap.put(keyObject, valueObject);
// Get all keys that are still being referenced
Iterator it = weakMap.keySet().iterator();
while (it.hasNext()) { // Get key
Object key = it.next();
}
The weak map does not automatically release the value if it is no longer used. To enable automatically release of the value, the value must be wrapped in a WeakReference object:
WeakReference weakValue = new WeakReference(valueObject);
weakMap.put(keyObject, weakValue);
// Get all keys that are still being referenced and check whether
// or not the value has been garbage-collected
it = weakMap.keySet().iterator();
while (it.hasNext()) {
// Get key
Object key = it.next();
weakValue = (WeakReference)weakMap.get(key);
if (weakValue == null)
{ // Value has been garbage-collected
} else {
// Get value
valueObject = weakValue.get();
}
}
No comments:
Post a Comment