public V remove(Object key) {
        processQueue(); // throw out garbage collected values first
        SoftValue<V, K> raw = map.remove(key);
        return raw != null ? raw.get() : null;
    }
Creates a new entry, but wraps the value in a SoftValue instance to enable auto garbage collection.
src/main/java/org/apache/shiro/lang/util/SoftHashMap.java