Repository: groovy Updated Branches: refs/heads/master 913454a0e -> 5a16022eb
Refine CommonCache Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/5a16022e Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/5a16022e Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/5a16022e Branch: refs/heads/master Commit: 5a16022eb356de9a9bc4971b2e8eb1f9a4b2baaa Parents: 913454a Author: sunlan <[email protected]> Authored: Sun Dec 10 18:27:38 2017 +0800 Committer: sunlan <[email protected]> Committed: Sun Dec 10 18:27:38 2017 +0800 ---------------------------------------------------------------------- .../org/codehaus/groovy/runtime/memoize/CommonCache.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/5a16022e/src/main/org/codehaus/groovy/runtime/memoize/CommonCache.java ---------------------------------------------------------------------- diff --git a/src/main/org/codehaus/groovy/runtime/memoize/CommonCache.java b/src/main/org/codehaus/groovy/runtime/memoize/CommonCache.java index ee6e0a9..ff521cd 100644 --- a/src/main/org/codehaus/groovy/runtime/memoize/CommonCache.java +++ b/src/main/org/codehaus/groovy/runtime/memoize/CommonCache.java @@ -18,6 +18,8 @@ */ package org.codehaus.groovy.runtime.memoize; +import java.lang.ref.SoftReference; +import java.lang.ref.WeakReference; import java.util.Collection; import java.util.HashMap; import java.util.LinkedList; @@ -177,8 +179,12 @@ public class CommonCache<K, V> implements EvictableCache<K, V> { List<K> keys = new LinkedList<>(); for (Map.Entry<K, V> entry : map.entrySet()) { - if (null == entry.getValue()) { - keys.add(entry.getKey()); + K key = entry.getKey(); + V value = entry.getValue(); + if (null == value + || (value instanceof SoftReference && null == ((SoftReference) value).get()) + || (value instanceof WeakReference && null == ((WeakReference) value).get())) { + keys.add(key); } }
