私にとって、このタグは割り当てた大きな UIImages に関連していました。私は、これについてより多くの情報を入手する方法と、(おそらく) 役に立つことを提案する方法について調査を行いました。
あなたが興味を持っているタグは、OSMalloc_tagAlloc() ではなく、vm_allocate などの flags 引数を介して渡されたものだと思います。iOS 3.1 のリリース ノートには、VM 計測器に関連する <mach/vm_statistics.h> および <mach/vm_map.h> ヘッダーが記載されています。
タグは、vm_statistics.h の VM_FLAGS_ALIAS_MASK および次の #defines に従って、vm_allocate フラグ パラメータを介して渡されると思います。(ここでは「エイリアス」と呼びます。)これは、たとえば vm_allocate をプローブし、フラグ パラメータからタグを抽出する dtrace スクリプトを作成できることを意味します。例えば:
sudo dtrace -n 'fbt:mach_kernel:vm_allocate:entry /pid==12345/ { printf("%d", (arg3 & 0xFF000000) >> 24); }'
Instruments を使用して dtrace インストゥルメントを作成し、[Instrument] メニューの [Build New Instrument...] を介して iOS シミュレーターに対して実行するか、コマンドライン dtrace スクリプトを使用して /pid == 123456 を含めることができます。 / 実行中のアプリの述語。
残念ながら、これらの割り当てを見つけるための正しいプローブを見つけることができませんでした。適切な argN 変数を調べると、フラグのタグ/エイリアス部分が常に 0 になっているように見えます。たとえば、上記の fbt:mach_kernel:vm_allocate、fbt:mach_kernel:mach_vm_allocate、fbt:mach_kernel:vm_map_enter などを試しました。カーネルのメモリ割り当てシステムについてはよくわかりません。
そのため、これらのタグがどこでカーネルに渡されているのか正確にはわかりませんが、これが追跡に役立つことを願っています.