From 71ffa2ae05855a795fb52e4edba32ff6ae6a1d0b Mon Sep 17 00:00:00 2001 From: Tobias Pietzsch <tobias.pietzsch@gmail.com> Date: Thu, 9 Feb 2017 15:17:05 -0500 Subject: [PATCH] Avoid polymorphic Entry.ref Always use CacheSoftReference, even for initial null referent. Simply do not enqueue the CacheSoftReference in this case. --- src/main/java/bdv/cache/revised/SoftRefCache.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/bdv/cache/revised/SoftRefCache.java b/src/main/java/bdv/cache/revised/SoftRefCache.java index 095815de..a8d1774e 100644 --- a/src/main/java/bdv/cache/revised/SoftRefCache.java +++ b/src/main/java/bdv/cache/revised/SoftRefCache.java @@ -21,6 +21,12 @@ public class SoftRefCache< K, V > implements Cache< K, V > { private final Entry entry; + public CacheSoftReference( final V referent ) + { + super( referent ); + this.entry = null; + } + public CacheSoftReference( final V referent, final Entry entry ) { super( referent, queue ); @@ -75,7 +81,7 @@ public class SoftRefCache< K, V > implements Cache< K, V > { final K key; - private SoftReference< V > ref; + private CacheSoftReference ref; private CachePhantomReference< V > phantomRef; @@ -86,7 +92,7 @@ public class SoftRefCache< K, V > implements Cache< K, V > public Entry( final K key ) { this.key = key; - this.ref = new SoftReference<>( null ); + this.ref = new CacheSoftReference( null ); this.phantomRef = null; this.remover = null; this.loaded = false; -- GitLab