Middle
Qayta ishlash to'plovchi (garbage collector) va avtomatik xotira boshqaruvi (ARC) o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
Qayta tozalash mashinasi dastur tomonidan endi ishlatilmaydigan xotirani avtomatik ravishda 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 referens 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