В чем разница между SoftReference и WeakReference в Java? - PullRequest
757 голосов

Ответы [ 11 ]

0 голосов
/ 05 ноября 2017

WeakReference : объекты, на которые имеются только слабые ссылки, собираются при каждом цикле GC (незначительном или полном).

SoftReference : когда объекты, на которые имеются только мягкие ссылки, собираются, зависит от:

  1. -XX: SoftRefLRUPolicyMSPerMB = флаг N (значение по умолчанию 1000, то есть 1 секунда)

  2. Объем свободной памяти в куче.

    Пример:

    • куча имеет 10 МБ свободного места (после полного GC);
    • -XX: SoftRefLRUPolicyMSPerMB = 1000

    Тогда объект, на который ссылается только SoftReference, будет собираться, если в последний раз, когда к нему обращались, больше 10 секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...