org.aspectbench.tm.runtime.internal
Class WeakKeyCollectingIdentityMap
java.lang.Object
org.aspectbench.tm.runtime.internal.WeakKeyIdentityMap
org.aspectbench.tm.runtime.internal.WeakKeyCollectingIdentityMap
- All Implemented Interfaces:
- java.util.Map
- public class WeakKeyCollectingIdentityMap
- extends WeakKeyIdentityMap
A Map implementation that uses reference identity of keys and holds weak references to its keys.
When a key is garbage-collected, the corresponding key->value mapping is dropped. Note that this
cleanup only happens upon certain map operations, so if they never occur the mapping will never
be cleaned up. Periodically call isEmpty() (or somesuch) if you need to guarantee mappings expire.
There's a potential race condition with the keySet method -- due to the above-mentioned cleanup,
mappings may be removed even without explicit user intervention while the keyset is being iterated.
Large parts of the Map interface aren't implemented as they are not necessary for the intended
application (tracematch indexing) and would be rather less than straightforward to implement.
- Author:
- Pavel Avgustinov
Nested classes inherited from class java.util.Map |
java.util.Map.Entry |
Method Summary |
void |
clear()
|
java.lang.Object |
get(java.lang.Object key)
|
boolean |
isEmpty()
|
java.util.Set |
keySet()
|
protected void |
purge()
|
java.lang.Object |
put(java.lang.Object key,
java.lang.Object value)
|
java.lang.Object |
remove(java.lang.Object key)
|
int |
size()
|
protected java.lang.Object |
writeBox(java.lang.Object key)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface java.util.Map |
equals, hashCode |
WeakKeyCollectingIdentityMap
public WeakKeyCollectingIdentityMap()
writeBox
protected java.lang.Object writeBox(java.lang.Object key)
- Overrides:
writeBox
in class WeakKeyIdentityMap
purge
protected void purge()
clear
public void clear()
- Specified by:
clear
in interface java.util.Map
- Overrides:
clear
in class WeakKeyIdentityMap
get
public java.lang.Object get(java.lang.Object key)
- Specified by:
get
in interface java.util.Map
- Overrides:
get
in class WeakKeyIdentityMap
isEmpty
public boolean isEmpty()
- Specified by:
isEmpty
in interface java.util.Map
- Overrides:
isEmpty
in class WeakKeyIdentityMap
keySet
public java.util.Set keySet()
- Specified by:
keySet
in interface java.util.Map
- Overrides:
keySet
in class WeakKeyIdentityMap
put
public java.lang.Object put(java.lang.Object key,
java.lang.Object value)
- Specified by:
put
in interface java.util.Map
- Overrides:
put
in class WeakKeyIdentityMap
remove
public java.lang.Object remove(java.lang.Object key)
- Specified by:
remove
in interface java.util.Map
- Overrides:
remove
in class WeakKeyIdentityMap
size
public int size()
- Specified by:
size
in interface java.util.Map
- Overrides:
size
in class WeakKeyIdentityMap