@Override
  public synchronized void putAll(Map<? extends K, ? extends V> m) {
    WeakHashMap<K, V> tmp = new WeakHashMap<>(map);
    tmp.putAll(m);
    map = Collections.unmodifiableMap(tmp);
  }
A copy on write hash map that uses weak references for keys.
geode-core/src/main/java/org/apache/geode/internal/util/concurrent/CopyOnWriteWeakHashMap.java