Вывод в консоль размера используемой памяти iOS Swift
Если в процессе разработки iOS приложения или любого другого приложения потребуется выяснить какое количество памяти используется в данный момент, то можно использовать следующую функцию:
// // proSwift.ru // func report_memory() { var info = mach_task_basic_info() var count = mach_msg_type_number_t(MemoryLayout<mach_task_basic_info>.size)/4 let kerr: kern_return_t = withUnsafeMutablePointer(to: &info) { $0.withMemoryRebound(to: integer_t.self, capacity: 1) { task_info(mach_task_self_, task_flavor_t(MACH_TASK_BASIC_INFO), $0, &count) } } if kerr == KERN_SUCCESS { print("Memory in use (in bytes): \(info.resident_size)") } else { print("Error with task_info(): " + (String(cString: mach_error_string(kerr), encoding: String.Encoding.ascii) ?? "unknown error")) } }
Попробуем в деле нашу функцию. Только я использовал для удобного отображения размера памяти еще и разделитель триад из предыдущей статьи.
// // proSwift.ru // print("Memory in use (in bytes): \(info.resident_size.formattedWithSeparator)")
Выполним цикл, в котором сто раз создадим массив из случайного числа, а также каждый шаг цикла будем вызывать написанную нами функцию report_memory()
// // proSwift.ru // for i in 1...100 { let n = [arc4random_uniform(999999)] report_memory() }
Моя консоль выглядит так:
Memory in use (in bytes): 36 950 016 Memory in use (in bytes): 36 954 112 Memory in use (in bytes): 36 966 400 Memory in use (in bytes): 36 978 688 Memory in use (in bytes): 36 982 784 Memory in use (in bytes): 36 990 976 Memory in use (in bytes): 37 003 264 Memory in use (in bytes): 37 011 456 Memory in use (in bytes): 37 019 648 Memory in use (in bytes): 37 027 840 Memory in use (in bytes): 37 031 936 Memory in use (in bytes): 37 044 224 Memory in use (in bytes): 37 052 416 Memory in use (in bytes): 37 060 608 Memory in use (in bytes): 37 072 896 Memory in use (in bytes): 37 076 992 Memory in use (in bytes): 37 097 472 Memory in use (in bytes): 37 105 664 Memory in use (in bytes): 37 117 952
Добавить комментарий