This cache keeps track of cache entries using
PhantomReference and maintains a collection of all resources that
are no longer in use. The cache, however, does not automatically deallocates associated
resources by invoking Resource.dispose() method. The consumer MUST periodically
call cleanResources() method to trigger resource deallocation. The cache can be
permanently shut down using shutdown() method. All resources associated with
the entries used by the cache will be deallocated.

Compatibility note. Prior to version 4.4 this storage implementation used to dispose of
all resource entries upon close(). As of version 4.4 the close() method
disposes only of those resources that have been explicitly removed from the cache with
removeEntry(String) method.

The shutdown() ()} method can still be used to shut down the storage and dispose of
all resources currently managed by it.