curtail contagious reference holding + java 8

many objects held references to their enclosing objects without
much actual need to. This could lead to an unexpectedly large
number of enclosing-class objects being retained after cache
eviction when a large number of their contained objects (FileRefs)
were being held elsewhere.

also java 8 cause might as well.