Основные различия между SoftReference
и WeakReference
в Java связаны с тем, как сборщик мусора влияет на объекты, на которые ссылаются эти типы ссылок.
Характеристика | SoftReference | WeakReference |
---|---|---|
Удержание объекта | Объект удерживается, пока хватает памяти. Если памяти критически мало, объект может быть собран. | Объект может быть собран в любой момент очередной сборки мусора, даже если памяти достаточно. |
Гарантия наличия объекта | Более вероятен, что объект будет доступен, пока не возникнет острая нехватка памяти. | Менее вероятен, что объект будет доступен после сборки мусора. |
Типичное применение | Кэширование, где объекты должны храниться, пока есть достаточно памяти. | Реализация слабых ассоциаций, где наличие объекта не является критичным. Например, в WeakHashMap . |
Поведение при нехватке памяти | Объект соберется только в случае острой нехватки памяти. | Сборка объекта не зависит напрямую от нехватки памяти; происходит в рамках обычного цикла сборки. |
И SoftReference
, и WeakReference
позволяют получать доступ к ссылке на объект (get()
метод) и помещать ссылки в ReferenceQueue
при сборк
Основные различия между SoftReference
и WeakReference
в Java связаны с тем, как сборщик мусора влияет на объекты, на которые ссылаются эти типы ссылок.
Характеристика | SoftReference | WeakReference |
---|---|---|
Удержание объекта | Объект удерживается, пока хватает памяти. Если памяти критически мало, объект может быть собран. | Объект может быть собран в любой момент очередной сборки мусора, даже если памяти достаточно. |
Гарантия наличия объекта | Более вероятен, что объект будет доступен, пока не возникнет острая нехватка памяти. | Менее вероятен, что объект будет доступен после сборки мусора. |
Типичное применение | Кэширование, где объекты должны храниться, пока есть достаточно памяти. | Реализация слабых ассоциаций, где наличие объекта не является критичным. Например, в WeakHashMap . |
Поведение при нехватке памяти | Объект соберется только в случае острой нехватки памяти. | Сборка объекта не зависит напрямую от нехватки памяти; происходит в рамках обычного цикла сборки. |
И SoftReference
, и WeakReference
позволяют получать доступ к ссылке на объект (get()
метод) и помещать ссылки в ReferenceQueue
при сборк
Register or sign in to get access to full answers for all questions from the question bank.