Для меня этот тег был связан с большими UIImages, которые я выделил. Я провел некоторое исследование того, как вы можете получить больше информации об этом и предложить некоторые (возможно) полезные вещи.
Я полагаю, что интересующие вас теги передаются через аргумент flags vm_allocate и аналогичных, а не OSMalloc_tagAlloc (). В примечаниях к выпуску iOS 3.1 упоминается заголовок и в связи с инструментом VM.
Я думаю, что тег передается через параметр флагов vm_allocate в соответствии с VM_FLAGS_ALIAS_MASK vm_statistics.h и после #defines. (Их здесь называют «псевдонимами».) Это означает, что вы должны быть в состоянии создать сценарий dtrace, который, например, проверяет vm_allocate и извлекает тег из параметра flags. Например:
sudo dtrace -n 'fbt:mach_kernel:vm_allocate:entry /pid==12345/ { printf("%d", (arg3 & 0xFF000000) >> 24); }'
Вы можете использовать инструменты для создания инструмента dtrace и запуска на симуляторе iOS через «Создать новый инструмент ...» в меню «Инструмент», или вы можете использовать сценарий командной строки dtrace и включить / pid == 123456 / предикат для вашего работающего приложения.
К сожалению, мне не удалось найти правильный зонд, чтобы найти эти распределения. При проверке соответствующей переменной argN у флагов всегда есть 0 в части tag / alia. Я пробовал, например, fbt: mach_kernel: vm_allocate, как указано выше, fbt: mach_kernel: mach_vm_allocate, fbt: mach_kernel: vm_map_enter и т. Д. Возможно, эти выделения проходят через какой-то другой путь? Я не знаю много о системе распределения памяти в ядре.
Итак, я не совсем уверен, куда эти теги передаются ядру, но я надеюсь, что это поможет вам отследить его.