Время от времени вам задают вопрос типа «как лучше всего высечь глаз палкой», что вы можете пойти на все, ответив на вопрос, как вы должны укрепить и стерилизовать палочку после того, как 1-дюймовый крючок в конце и уточните, куда следует вставить флешку и так далее. На самом деле, лучший ответ, вероятно, не совсем то, что было задано - но вопрос относительно почему, черт возьми, вы хотите сделать это в первую очередь!
Это один из тех вопросов.
SoftReferences - это то, что изначально звучит как то, что вы можете захотеть. Ссылка, которая не собирает мусор, пока не будет давление ГХ. Предположительно, вы бы использовали это для кеширования чего-то, что стоило бы кешировать, обычно потому, что изначально было дорого создавать.
Проблема в том, что SoftRefs очищаются почти точно, когда вы этого не хотите, когда GC находится под давлением! Это означает, что их нужно будет воссоздать (дорогая операция) прямо тогда, когда виртуальная машина уже занята и находится под давлением ГХ.
Кроме того, нет способа намекнуть ВМ относительно приоритета объектов, на которые имеются мягкие ссылки. Конкретный алгоритм, используемый для выбора объектов для очистки, не указан и зависит от ВМ.
По сути, SoftReferences - это ошибочная попытка разгрузить проблему уровня приложения (кэширование) в сборщик мусора. Вы действительно никогда не должны * фактически использовать их.
* никогда, по модулю несколько очень маленьких и очень специализированных сценариев использования