Sobes.tech
Junior

Mi az a memória szivárgás és hogyan fordul elő?

sobes.tech MI

Válasz az MI-től

Memóriaszivárgás akkor fordul elő, amikor egy program memóriát foglal le objektumok számára, de miután már nincs rájuk szükség, a rájuk mutató hivatkozásokat nem törlik, és a szemétgyűjtő nem tudja felszabadítani ezt a memóriát. iOS-en, ahol az ARC (Automatikus Referenciaszámlálás) van használatban, a memóriaszivárgások gyakran ciklikus hivatkozások miatt fordulnak elő, például amikor két objektum egymásra mutat erős hivatkozásokon keresztül, és egyik sem kerül felszabadításra.

Swift-ben ciklikus hivatkozás példája:

class A {
    var b: B?
}

class B {
    var a: A?
}

let a = A()
let b = B()

a.b = b
b.a = a
// Mindkét objektum egymásra mutat, az ARC nem tudja automatikusan felszabadítani őket

A szivárgások elkerülése érdekében, gyenge (weak) vagy tulajdon nélküli (unowned) hivatkozásokat használnak, amelyek nem növelik a hivatkozásszámot, és lehetővé teszik az objektumok helyes felszabadítását.