Fuente
Затишна Галера | iOSКомпас 🧭1️⃣4️⃣6️⃣ Завдання 146Чим відрізняється garbage collector і...
620 Vistas/Alcance
2026-03-18 08:03
Mensaje №2500
#iOSКомпас 🧭1️⃣4️⃣6️⃣ Завдання 146Чим відрізняється garbage collector і підрахунок посилань?Доброго здровля мої любі друзі. З вами ваш незмінний ios розробник Сергій з @badlinkschannel.🤔 Garbage Collector (GC) і Automatic Reference Counting (ARC) - це два різних підходи до управління пам’яттю в програмуванні. Вони вирішують одну задачу: автоматичне звільнення невикористовуваної пам’яті, але роблять це по-різному.🔣 Garbage Collector (GC)Java, Kotlin, C#, Python, JavaScript➖ GC використовує алгоритми трасування (наприклад mark-and-sweep) і визначає, які об’єкти доступні з кореневих посилань, а які вже недосяжні.➖ Об’єкти, до яких немає досяжних посилань, вважаються «сміттям» і видаляються, а пам’ять звільняється.➖ Це автоматичний процес, який запускається рантаймом за потреби.🔣 Підрахунок посилань (ARC - Automatic Reference Counting)Де використовується: Swift, Objective-C➖ Кожен об’єкт має лічильник strong посилань (reference count).➖ Коли змінна створює strong посилання на об’єкт, лічильник збільшується.➖ Коли посилання зникає, лічильник зменшується.➖ Коли лічильник досягає нуля, об’єкт деініціалізується і пам’ять звільняється.class Person {var pet: Pet?}class Pet {var owner: Person?}let person = Person()let pet = Pet()person.pet = petpet.owner = person // Тепер обидва об’єкти тримають один одного, і ARC їх не видалить
🔣 Рішення - використовувати weak або unowned:class Pet { weak var owner: Person? // Тепер витоку пам’яті не буде}
@Zatishna_Galera