Я пытаюсь получить объем памяти, который мое приложение для iPhone использует в любое время программно. Да, я знаю об ObjectAlloc / Leaks. Меня это не интересует, только чтобы знать, можно ли написать код, получить количество используемых байтов и сообщить об этом через NSLog.
Спасибо.
ios
objective-c
iphone
cocoa-touch
memory
Coocoo4Cocoa
источник
источник
Ответы:
Чтобы получить фактические байты памяти, которые использует ваше приложение, вы можете сделать что-то вроде примера ниже. Однако вам действительно следует ознакомиться с различными инструментами профилирования, так как они разработаны, чтобы дать вам гораздо лучшее представление об их использовании в целом.
В структуре info.virtual_size также есть поле, которое даст вам количество байтов доступной виртуальной памяти (или памяти, выделенной вашему приложению в качестве потенциальной виртуальной памяти в любом случае). Код, на который ссылается pgb, даст вам объем памяти, доступной устройству, и тип памяти.
источник
Заголовки
TASK_BASIC_INFO
говорят:Вот версия с использованием
MACH_TASK_BASIC_INFO
:источник
Вот улучшенный report_memory (), позволяющий быстро отображать статус утечки в NSLog ().
источник
Это было протестировано на Xcode 11 в Mojave 10.4.6 01.07.2019.
Все предыдущие ответы возвращают неверный результат .
Вот как получить ожидаемое значение, написанное Куинном из Apple «Эскимос!».
При этом используется
phys_footprint
переменная отDarwin > Mach > task_info
и близко соответствует значению в индикаторе памяти в навигаторе отладки Xcode .Возвращаемое значение выражено в байтах.
https://forums.developer.apple.com/thread/105088#357415
Исходный код следует.
Немного изменив это, чтобы создать набор методов Swift уровня класса, можно легко вернуть фактические байты и отформатировать вывод в МБ для отображения. Я использую это как часть автоматизированного набора UITest для регистрации памяти, использованной до и после нескольких итераций одного и того же теста, чтобы увидеть, есть ли у нас какие-либо потенциальные утечки или выделения, которые нам нужно изучить.
Наслаждайтесь!
Примечание: предприимчивый программист может захотеть добавить в класс статическое средство форматирования, чтобы
usedMBAsString
возвращалось только 2 значащих десятичных разряда .источник
Быстрое решение ответа Джейсона Коко :
источник
Swift 3.1 (по состоянию на 8 августа 2017 г.)
источник
(1024*1024)
, а не на1000000
, чтобы получить мегабайты из байтов.Вот версия Swift 3:
источник
Версия Objective-C:
источник
Вот правильный ответ:
`` ''
`` ''
источник