WeakReference : объекты, на которые имеются только слабые ссылки, собираются при каждом цикле GC (незначительном или полном).
SoftReference : когда объекты, на которые имеются только мягкие ссылки, собираются, зависит от:
-XX: SoftRefLRUPolicyMSPerMB = флаг N (значение по умолчанию 1000, то есть 1 секунда)
Объем свободной памяти в куче.
Пример:
- куча имеет 10 МБ свободного места (после полного GC);
- -XX: SoftRefLRUPolicyMSPerMB = 1000
Тогда объект, на который ссылается только SoftReference, будет собираться, если в последний раз, когда к нему обращались, больше 10 секунд.