import UIKit
func getAppMemoryUsage() -> Double? {
var info = task_vm_info_data_t()
var count = mach_msg_type_number_t(MemoryLayout<task_vm_info_data_t>.size) / 4
let result: kern_return_t = withUnsafeMutablePointer(to: &info) { ptr in
ptr.withMemoryRebound(to: integer_t.self, capacity: 1) { intPtr in
task_info(mach_task_self_, task_flavor_t(TASK_VM_INFO), intPtr, &count)
}
}
if result == KERN_SUCCESS {
let memoryUsageInBytes = info.phys_footprint
let memoryUsageInMB = Double(memoryUsageInBytes) / (1024 * 1024)
return memoryUsageInMB
} else {
return nil
}
}