Мягкие и слабые ссылки - это отличный способ хранить данные, которые вы хотели бы иметь в памяти, но можете обойтись без них, если память переполнена.
Нормальные ссылки сильны, то есть объект недоработать или собрать мусор, пока кто-то твердо на него ссылается.Если вы удерживаете SoftReference для объекта, объект, скорее всего, останется в памяти до ситуации OutOfMemory, когда он будет автоматически очищен.Слабая ссылка, вероятно, будет очищена в любое время, но она все еще может быть полезна в тех случаях, когда удержание объекта экономит некоторые дисковые издержки.
Благодаря этим характеристикам ссылки отлично подходят для кэширования данных, не беспокоясь о необходимости сбрасывать данныеесли память начинает заполняться.
Самый простой способ создать ссылку - это:
Reference<MyClass> r = new SoftReference<MyClass>(new MyClass())
Теперь вы передаете ссылку вокруг.Когда вы хотите получить объект, вы вызываете Reference.get ()
MyClass myClass = r.get();
if (myClass != null) {
// do something
}
else {
// Oh dear class isn't there, go to plan b
}