Sobes.tech
Junior — Middle

Ako určiť počet pamäťových oblastí pridelených aplikácii počas jej behu?

sobes.tech AI

Odpoveď od AI

Na iOS, na určenie využitia pamäte aplikáciou počas jej behu môžete použiť nástroje Xcode, napríklad Instruments s šablónou Allocations alebo Memory Graph Debugger. Tieto ukazujú množstvo pridelené pamäte, jej veľkosť a typ.

Tiež je možné programovo získať informácie o aktuálnom využití pamäte pomocou API, napríklad pomocou task_info z Mach API:

import MachO
import Darwin

func reportMemory() -> UInt64? {
    var info = task_basic_info()
    var count = mach_msg_type_number_t(MemoryLayout<task_basic_info>.size) / 4

    let kerr: kern_return_t = withUnsafeMutablePointer(to: &info) {
        $0.withMemoryRebound(to: integer_t.self, capacity: Int(count)) {
            task_info(mach_task_self_, task_flavor_t(TASK_BASIC_INFO), $0, &count)
        }
    }

    if kerr == KERN_SUCCESS {
        return UInt64(info.resident_size)
    } else {
        return nil
    }
}

if let memoryUsed = reportMemory() {
    print("Použitá pamäť: \(memoryUsed) bajtov")
}

Tento kód vráti množstvo pamäte (resident size), ktorú aktuálna aplikácia využíva. Pre podrobnejšiu analýzu je však lepšie používať nástroje Xcode.