Одно использование для кэширования. Представьте, что вы хотите поддерживать кэш больших объектов в памяти, но вы не хотите, чтобы этот кэш занимал память, которую можно было бы использовать для других целей (поскольку кеш всегда можно восстановить). Поддерживая кэш софт-ссылок на объекты, ссылочные объекты могут быть освобождены JVM, а память, которую они занимали, используется повторно для других целей. Кешу просто нужно будет очистить битые софт-ссылки при их обнаружении.
Другое использование может быть для сохранения изображений приложений на устройстве с ограниченной памятью, таком как мобильный телефон. Когда пользователь открывает приложения, изображения предыдущих приложений могут сохраняться в виде программных ссылок, чтобы их можно было очистить, если память нужна для чего-то другого, но все еще будет там, если не будет спроса на память. Это позволит пользователю быстрее вернуться к приложению, если нет нагрузки на память, и позволит восстановить память предыдущего приложения, если это необходимо для чего-то другого.