代码之家  ›  专栏  ›  技术社区  ›  Tal

为什么转储.NET进程会增加内存使用率

  •  1
  • Tal  · 技术社区  · 16 年前

    我们有一个.NET服务,在启动时使用大约30MB的内存。(vm~=mem用法)
    我想放弃这个过程,找出30毫巴的内存是什么。

    生成小型转储的CDB调试器 内存使用量增加了100MB .
    从转储文件我可以看到那些100MB是图像内存(DLL)

    -------------------- Usage SUMMARY --------------------------
        TotSize (      KB)   Pct(Tots) Pct(Busy)   Usage
        2d07000 (   46108) : 02.20%    28.45%    : RegionUsageIsVAD
       761ac000 ( 1935024) : 92.27%    00.00%    : RegionUsageFree
        64b0000 (  103104) : 04.92%    63.62%    : RegionUsageImage
         900000 (    9216) : 00.44%    05.69%    : RegionUsageStack
           9000 (      36) : 00.00%    00.02%    : RegionUsageTeb
         380000 (    3584) : 00.17%    02.21%    : RegionUsageHeap
              0 (       0) : 00.00%    00.00%    : RegionUsagePageHeap
           1000 (       4) : 00.00%    00.00%    : RegionUsagePeb
           1000 (       4) : 00.00%    00.00%    : RegionUsageProcessParametrs
           2000 (       8) : 00.00%    00.00%    : RegionUsageEnvironmentBlock
           Tot: 7fff0000 (2097088 KB) Busy: 09e44000 (162064 KB)
    

    在调试程序分离很久之后,内存使用率仍然很高。 我想知道这个图像加载/内存提升的大小写是什么?

    谢谢。

    2 回复  |  直到 16 年前
        1
  •  3
  •   Tal    16 年前

    “通常,未使用的页面不是工作集的一部分,只是地址的一部分。” 空间。在创建完全转储时,地址空间中的所有页 读取并写入磁盘。只要转储的大小基本上等于进程地址空间的大小,那么您所描述的就是预期的。”

    我的答案来自 Ivan Brugiolo & Pavel Lebedinsky .

        2
  •  -1
  •   Amirshk    16 年前

    您可以使用分析器来分析内存消耗。

    1. NProfiler -福斯
    2. NCover -不自由