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

时间:2010-02-03 09:29:11

标签: .net memory dump memory-dump

我们在启动时使用〜30MB内存的.NET服务。 (VM~ = Mem用法)
我想抛弃这个过程并找出持有那些30MB的东西。

生成小型转储的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)

在调试器分离后很长时间内,mem使用率很高。 我想知道这个图像加载/内存提升是什么?

感谢。

2 个答案:

答案 0 :(得分:3)

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

我从Ivan Brugiolo & Pavel Lebedinsky得到了答案。

答案 1 :(得分:-1)

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

  1. NProfiler - foss
  2. NCover - 不免费