Отслеживание использования памяти iOS - PullRequest
0 голосов
/ 19 декабря 2018

Я ищу способ как можно точнее отслеживать использование памяти 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

Поведение, которое я не могу объяснить, заключается в том, что когда выделенная память достигает около 500 МБ, значение, возвращаемое этой функцией, не увеличивается (она продолжает отображать значение в диапазоне 450/450 МБ), покаОтладчик Xcode продолжает расти до 1,3 ГБ, а затем мое приложение уведомляется о предупреждении памяти.

Код, который я использовал для проверки этой функции, запускается каждые 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;
}

Я что-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...