跟踪iOS内存使用情况

时间:2018-12-19 15:55:28

标签: ios objective-c memory

我正在寻找一种方法来尽可能准确地从我的应用程序中跟踪iOS内存使用情况。经过多次试验,我最终得到以下代码:

uint64_t memory_usage (void) {
   task_vm_info_data_t vmInfo;
   mach_msg_type_number_t count = TASK_VM_INFO_COUNT;
   if (task_info(mach_task_self(), TASK_VM_INFO, (task_info_t) &vmInfo, &count) != KERN_SUCCESS) return -1;

   return vmInfo.internal;
}

从真实设备执行时,返回的值与Xcode调试器报告的值同步。

enter image description here

我无法解释的行为是,当分配的内存达到约500MB时,此函数返回的值不会增加(它继续报告450 / 450MB范围内的值),而Xcode调试器将继续增长直到1.3GB然后将内存警告通知我的应用。

我用于测试此功能的代码每隔0.5秒从NSTimer内部触发以下操作:

- (void) checkMemory {
   uint64_t mem_usage = memory_usage();

   // allocate a 5MB buffer to test memory usage
   uint32_t buffer_size = 5 * 1024 * 1024;
   char *buffer = (char *)malloc(buffer_size);
   memset(buffer, 0, buffer_size);

   p[i++] = buffer;
}

我想念什么吗?

0 个答案:

没有答案