我们在启动时使用〜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使用率很高。 我想知道这个图像加载/内存提升是什么?
感谢。
答案 0 :(得分:3)
“通常,未使用的页面不是工作集的一部分,只是地址的一部分
空间。在创建完整转储时,地址空间中的所有页面
读入并写入磁盘。只要转储的大小基本上等于进程的地址空间大小,您所描述的就是预期的。“
我从Ivan Brugiolo & Pavel Lebedinsky得到了答案。
答案 1 :(得分:-1)