Middle
Tullantı toplayıcı (garbage collector) və avtomatik yaddaş idarəetməsi (ARC) arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Tullantı toplayıcı avtomatik ravishda dastur tomonidan endi ishlatilmaydigan xotirani topadi va bo'shatadi. U fon rejimida ishlaydi, doimiy ravishda to'plamni skaner qiladi va faol bo'lmagan ob'ektlarni aniqlaydi.
ARC (Avtomatik Referenslar Hisoblagichi) Swift va Objective-C da ob'ektlarning hayotini boshqaradi, har bir ob'ektga kuchli referenslar sonini hisoblab chiqadi. Kuchli referenslar soni nolga teng bo'lsa, ARC avtomatik ravishda bu ob'ekt tomonidan egallangan xotirani bo'shatadi.
Asosiy farqlar:
| Xususiyat | Qayta tozalash mashinasi | ARC |
|---|---|---|
| Ishlash prinsipi | Erishilmaydigan ob'ektlarni qidirish | Kuchli referenslar hisoblash |
| Bo'shatish vaqti | Noaniq, skanerlash paytida | Aniq, soni 0 ga teng bo'lsa |
| Qo'shimcha xarajatlar | Dastur bajarilishida to'xtashlar (to'plam paytida) | Minimal, hisoblagich o'zgarganda |
| Bashorat qilish | Past | Yuqori |
| Siklli referenslar | Maxsus yondashuvlarni talab qiladi (masalan, zaif referenslar) | weak yoki unowned referenslardan foydalanishni talab qiladi |
| iOSda foydalanish | Zamonaviy Objective-C va Swiftda mavjud emas | Objective-C va Swiftda asosiy xotira boshqarish mexanizmi |
ARC da kuchli referans sikllarini oldini olish uchun weak dan foydalanish misoli:
class Person {
let name: String
var apartment: Apartment? // kuchli referens
init(name: String) {
self.name = name
print("\(name) boshlanmoqda")
}
deinit {
print("\(name) tugatilmoqda")
}
}
class Apartment {
let unit: String
weak var tenant: Person? // zaif referens
init(unit: String) {
self.unit = unit
print("Xonadon \(unit) boshlanmoqda")
}
deinit {
print("Xonadon \(unit) tugatilmoqda")
}
}
var john: Person?
var unit4A: Apartment?
john = Person(name: "John Appleseed")
unit4A = Apartment(unit: "4A")
john!.apartment = unit4A
unit4A!.tenant = john // zaif referens siklni oldini oladi
john = nil // Person ob'ekti tugatiladi
unit4A = nil // Apartment ob'ekti tugatiladi