Sobes.tech
Back to questions
Junior — Middle
70

Чем отличается использование мягких ссылок от слабых в управлении памятью в Java?

Companies where asked
Инити

Answer from AI

sobes.tech AI

В Java мягкие (SoftReference) и слабые (WeakReference) ссылки используются для управления памятью, но отличаются по времени жизни объектов:

  • Мягкие ссылки (SoftReference): объекты, на которые есть только мягкие ссылки, будут удалены сборщиком мусора только при нехватке памяти. Это полезно для кэширования — объекты сохраняются дольше, пока память не станет ограничена.

  • Слабые ссылки (WeakReference): объекты, на которые есть только слабые ссылки, могут быть удалены сборщиком мусора при следующем проходе, даже если памяти достаточно. Используются для реализации слабых коллекций, где объекты не должны препятствовать сбору.

Пример:

SoftReference<MyObject> softRef = new SoftReference<>(new MyObject());
WeakReference<MyObject> weakRef = new WeakReference<>(new MyObject());

Таким образом, мягкие ссылки дают более длительный срок жизни объекта по сравнению со слабыми.