Как программно получить размер «сопоставленных файлов» в OSX? - PullRequest
1 голос
/ 15 марта 2011

Когда я использую vmmap (или инструмент Allocations в Instruments), одной из строк вывода является 'mapped file'. Как я могу получить этот номер программно?

Вывод 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]

Ответы [ 2 ]

0 голосов
/ 19 июня 2013

Я не пытался посмотреть, как это делает vmmap, но из того, что я вижу, я смотрю на регионы из vm_region_recurse_64 с

  • vm_region_submap_info_64.user_tag == 0,
  • не в диапазоне SHARED_REGION_BASE .. SHARED_REGION_BASE+SHARED_REGION_SIZE
  • с непустым путем от proc_regionfilename()

... должно быть довольно близко. Предложения о лучшем способе сделать это приветствуются!

0 голосов
/ 15 марта 2011

"Системный вызов mach vm_region извлекает информацию, используемую vmmap."

С http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/vmmap.1.html.

...