How to GC a SoftReference if its reference is GC'ed
===

I have a 

    ConcurrentMap<String, SoftReference<X>> map = new ConcurrentHashMap<String, SoftReference<X>>();


and would like the key/value pair removed from the map when the referent of the SoftReference is GC'ed. 

How do I go about achieving this?