В одних местах пишут что SoftReference удаляется когда не хватает памяти, в других что на это влияет время поледнего доступа. Как показал анализ сорцов, в методе SoftReference.get() есть изменение времени последнего доступа.
Вопрос, как тогда узнать удалил ли GC объект из SoftReference чтобы не менять время последнего доступа к SoftReference? Ибо для алгоритма кеширования нужно подчищать "пустые" SoftReference.