@Override
  public K getReferenceKey(Reference<V> ref) {
    return ((SoftObjectReference) ref).key;
  }
A {@code SoftReference} based shared object pool. The objects are kept in soft references and
associated with keys which are identified by the {@code equals} method. The objects are created
by ObjectFactory on demand. The object creation is expected to be lightweight, and the objects
may be excessively created and discarded. Thread safe.
hbase-common/src/main/java/org/apache/hadoop/hbase/util/SoftObjectPool.java