【问题标题】:Is there any API for the command vmmap命令 vmmap 是否有任何 API
【发布时间】:2016-01-25 01:54:42
【问题描述】:

在命令行中,我可以使用vmmap -v -purge 50554查找进程50554的内存信息,得到如下输出:

                                  VIRTUAL RESIDENT    DIRTY  SWAPPED VOLATILE   NONVOL    EMPTY   REGION 
REGION TYPE                          SIZE     SIZE     SIZE     SIZE     SIZE     SIZE     SIZE    COUNT (non-coalesced) 
===========                       ======= ========    =====  ======= ========   ======    =====  ======= 
Accelerate.framework                 256K     256K     256K       0K       0K     256K       0K        3 
Activity Tracing                    2048K      40K      40K       0K       0K       0K       0K        2 

......
                                          VIRTUAL   RESIDENT      DIRTY    SWAPPED ALLOCATION      BYTES          REGION
MALLOC ZONE                                  SIZE       SIZE       SIZE       SIZE      COUNT  ALLOCATED  % FULL   COUNT
===========                               =======  =========  =========  =========  =========  =========  ======  ======
DefaultMallocZone_0x10453d000              532.5M     524.4M     476.8M         0K    3203739     424.3M     79%     829
DefaultPurgeableMallocZone_0x117c92000      14.2M      13.7M      13.7M         0K          3      14.2M     99%       4
WebKit Malloc_0x7fff7c65ecb8                12.0M      8928K      8756K         0K          3      12.0M    100%       3
QuartzCore_0x7fc9519bc000                   1516K      1516K      1516K         0K      27313      1390K     91%     207
unnamed_zone_0x120a0a000                    1024K        12K        12K         0K          4        224      0%       2
x-alloc_0x7fc95189ec00                        12K        12K        12K         0K         48       1696     13%       1
x-alloc_0x7fc951047800                         8K         8K         8K         0K          4        448      5%       1
GFXMallocZone_0x10598d000                      0K         0K         0K         0K          0         0K               0
===========                               =======  =========  =========  =========  =========  =========  ======  ======
TOTAL                                      561.1M     548.3M     500.5M         0K    3231114     451.8M     80%    1047

但是有什么 API 可以调用实现相同的功能吗?

【问题讨论】:

  • 当然vmmap 使用一些接口来访问此信息。弄清楚它是什么。
  • @JonathonReinhart 你知道它是什么吗?我在谷歌搜索了这么多天还是不知道
  • 在 Linux 上,您可以使用工具 strace观察相关程序的行为。我不知道 OSX 对应的名称是什么。

标签: macos vmmap


【解决方案1】:

您的问题的答案有些复杂,但可以在 mach_vm_region_info() 的内核源代码中找到:https://opensource.apple.com/source/xnu/xnu-201/osfmk/vm/vm_debug.c

此代码(除其他外)贯穿 VM 映射表并构建一个结构链接列表,其中包含 vmmap(1) 命令显示的所有信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    • 2010-12-18
    • 1970-01-01
    • 2018-08-05
    相关资源
    最近更新 更多