la siguiente rápido función devolverá los sistemas de memoria libre (RAM) en bytes. regresará nulo en caso de falla.
func systemFreeMemorySize() -> UInt?
{
let HOST_VM_INFO_COUNT: mach_msg_type_number_t = mach_msg_type_number_t(sizeof(vm_statistics_data_t)/sizeof(integer_t))
let host: host_t = mach_host_self()
var pageSize: vm_size_t = vm_size_t()
let hostPageSizeKernStatus: kern_return_t = host_page_size(host, &pageSize)
guard hostPageSizeKernStatus == KERN_SUCCESS else {
NSLog("Error with host_page_size(): " + (String.fromCString(mach_error_string(hostPageSizeKernStatus)) ?? "unknown error"))
return nil
}
var stats: vm_statistics_data_t = vm_statistics_data_t()
var count: mach_msg_type_number_t = HOST_VM_INFO_COUNT
let kernStatus: kern_return_t = withUnsafeMutablePointer(&stats) {
return host_statistics(host, HOST_VM_INFO, host_info_t($0), &count)
}
guard kernStatus == KERN_SUCCESS else {
NSLog("Error with host_statistics(): " + (String.fromCString(mach_error_string(kernStatus)) ?? "unknown error"))
return nil
}
return UInt(stats.free_count) * UInt(pageSize)
}
Gracias Ben. Solo para confirmar, ¿su solución usa alguna API privada? ¿Qué bibliotecas debo importar para usarlo? – hpique
No, no hay API privadas. –
Esto es bueno @BenGottlieb, ¿Cómo alguien tiene esta mente? El código que has hecho aquí, nunca podría pensar en hacerlo. ¡Estupendo! – Hemang