当我使用'vmmap'(或仪器中的Allocations工具)时,其中一行输出是'映射文件'。如何以编程方式获得此编号?
vmmap输出:
REGION TYPE [ VIRTUAL]
=========== [ =======]
ATS (font support) [ 32.9M]
CG backing stores [ 110.1M]
CG raster data [ 64K]
CG shared images [ 2284K]
Carbon [ 3444K]
CoreGraphics [ 8K]
IOKit [ 512.8M]
MALLOC [ 264.7M]
Memory tag=240 [ 4K]
Memory tag=242 [ 12K]
Memory tag=243 [ 12K]
Memory tag=249 [ 192K]
OpenGL GLSL [ 3072K]
STACK GUARD [ 56.5M]
Stack [ 57.4M]
VM_ALLOCATE [ 827.7M]
__DATA [ 23.3M]
__DATA/__OBJC [ 12K]
__IMAGE [ 1240K]
__IMPORT [ 732K]
__LINKEDIT [ 80.1M]
__OBJC [ 1148K]
__OBJC/__DATA [ 12K]
__PAGEZERO [ 4K]
__TEXT [ 232.2M]
__UNICODE [ 536K]
mapped file [ 38.9M]
shared memory [ 580K]
shared pmap [ 7440K]
答案 0 :(得分:0)
“mach系统调用vm_region检索vmmap使用的信息。”
来自http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/vmmap.1.html。
答案 1 :(得分:0)
我没有尝试查看vmmap是如何做到的,但是从我看到的,用vm_region_recurse_64查看区域
SHARED_REGION_BASE
.. SHARED_REGION_BASE+SHARED_REGION_SIZE
范围内proc_regionfilename()
......应该非常接近。欢迎提出更好的方法建议!