diff options
author | Eike Stepper | 2007-12-18 15:06:38 +0000 |
---|---|---|
committer | Eike Stepper | 2007-12-18 15:06:38 +0000 |
commit | 2af988b3fea51871dbbe17e6c3fa1d692cfcbd4e (patch) | |
tree | 3dc5b1f7c727e359ba3eaa092cee6777086f1134 /plugins/org.eclipse.net4j.util/src/org/eclipse/net4j | |
parent | 23cfd7ec7edee9159b40fe593d0e3abb2c90359b (diff) | |
download | cdo-2af988b3fea51871dbbe17e6c3fa1d692cfcbd4e.tar.gz cdo-2af988b3fea51871dbbe17e6c3fa1d692cfcbd4e.tar.xz cdo-2af988b3fea51871dbbe17e6c3fa1d692cfcbd4e.zip |
[209490] Put purging mechanism in CDOViewIMpl::objects to avoid OutOfMemory
https://bugs.eclipse.org/bugs/show_bug.cgi?id=209490
Diffstat (limited to 'plugins/org.eclipse.net4j.util/src/org/eclipse/net4j')
-rw-r--r-- | plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/ref/ReferenceValueMap.java | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/ref/ReferenceValueMap.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/ref/ReferenceValueMap.java index d9fd2ed293..fa5f160536 100644 --- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/ref/ReferenceValueMap.java +++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/ref/ReferenceValueMap.java @@ -81,7 +81,7 @@ public abstract class ReferenceValueMap<K, V> extends AbstractMap<K, V> implemen { if (ref.get() == null) { - ref.enqueue(); + // ref.enqueue(); return false; } @@ -104,7 +104,7 @@ public abstract class ReferenceValueMap<K, V> extends AbstractMap<K, V> implemen V v = ref.get(); if (v == null) { - ref.enqueue(); + // ref.enqueue(); return false; } @@ -226,7 +226,8 @@ public abstract class ReferenceValueMap<K, V> extends AbstractMap<K, V> implemen KeyedReference<K, V> ref; while ((ref = (KeyedReference<K, V>)queue.poll()) != null) { - map.remove(ref.getKey()); + // Slightly faster than map.get() + map.remove() + map.remove(ref.getKey(), ref); } } } @@ -238,13 +239,7 @@ public abstract class ReferenceValueMap<K, V> extends AbstractMap<K, V> implemen return null; } - V value = ref.get(); - if (value == null) - { - ref.enqueue(); - } - - return value; + return ref.get(); } protected abstract KeyedReference<K, V> createReference(K key, V value, ReferenceQueue<V> queue); |