Яка різниця між слабкими та сильними посиланнями в Java?
У комп'ютерному програмуванні, слабке посилання – це посилання, яке не захищає об'єкт, на який посилається, від збирання сміттям, на відміну від сильного посилання.
Основна відмінність між SoftReference і WeakReference полягає в тому, як збирач буде працювати з ними. Він може будь-коли видалити об’єкт, якщо на нього вказують лише слабкі посилання, з іншого боку, об’єкти з м’яким посиланням будуть зібрані лише тоді, коли JVM справді потрібна пам’ять.
Сильна посилання: сильні посилання є звичайні посилання в Java. Кожного разу, коли ми створюємо новий об’єкт, за умовчанням створюється надійне посилання. Наприклад, коли ми робимо: MyObject object = new MyObject(); Створюється новий об’єкт MyObject, і в об’єкті зберігається надійне посилання на нього.
Це змусило мене глибоко зацікавитися дослідженням причини збільшення рівня просування за допомогою WeakReferences. Слабкі посилання визначаються як: Слабкі еталонні об’єкти, які не перешкоджають тому, щоб їх референти можна було завершити, завершити, а потім відновити.
Загалом жорсткі посилання найкраще використовувати для об’єктів, які мають вирішальне значення для функціонування вашої гри чи програми та які, як ви знаєте, завжди існуватимуть. М’які посилання найкраще використовувати для об’єктів, які можна завантажувати та вивантажувати динамічно, залежно від потреб вашої гри чи програми.
У C#, слабкі посилання відрізняються тим, відстежують вони відновлення об’єкта чи ні. Це розрізнення не відбувається для сильних посилань, оскільки об’єкти не завершуються, якщо на них є сильні посилання.