如何判断它是托管内存泄漏还是本机内存泄漏?

时间:2011-09-12 14:50:47

标签: .net memory-leaks windbg managed sos

与本机dll交互的我的.NET进程正在抛出OutOfMemory异常。以下是!address -summary和--eeheap-gc coammands。这是否意味着它是一个管理泄漏还是原生泄漏?

0:000> !地址 - 简介
 ProcessParametrs 002f10a8,范围002f0000 003f0000
 环境002f07f0,范围002f0000 003f0000

--------------------使用摘要------------------------- -
    TotSize(KB)Pct(Tots)Pct(Busy)用法
   17773000(384460):18.33%22.25%:RegionUsageIsVAD
   168aa000(369320):17.61%00.00%:RegionUsageFree
   110fe000(279544):13.33%16.18%:RegionUsageImage
   395fe000(940024):44.83%54.41%:RegionUsageStack
     396000(3672):00.18%00.21%:RegionUsageTeb
    7540000(120064):05.73%06.95%:RegionUsageHeap
          0(0):00.00%00.00%:RegionUsagePageHeap
       1000(4):00.00%00.00%:RegionUsagePeb
          0(0):00.00%00.00%:RegionUsageProcessParametrs
          0(0):00.00%00.00%:RegionUsageEnvironmentBlock
       总数:7fff0000(2097088 KB)忙:69746000(1727768 KB)

--------------------类型摘要------------------------- -
    TotSize(KB)Pct(Tots)用法
   168aa000(369320):17.61%:
   15970000(353728):16.87%:MEM_IMAGE
    47e9000(73636):03.51%:MEM_MAPPED
   4f5ed000(1300404):62.01%:MEM_PRIVATE

--------------------状态摘要------------------------- -
    TotSize(KB)Pct(Tots)用法
   303e1000(790404):37.69%:MEM_COMMIT
   168aa000(369320):17.61%:MEM_FREE
   39365000(937364):44.70%:MEM_RESERVE

最大的自由区域:基数0d8b1000 - 大小0010f000(1084 KB)

0:000> !EEHeap -gc
GC堆数:1
第0代从0x425f776c开始 第1代从0x425f5a08开始 第2代从0x01881000开始 短暂的段分配上下文:无
 段开始分配大小
01880000 01881000 0281ecf8 0x00f9dcf8(16375032)
12010000 12011000 12f83a04 0x00f72a04(16198148)
1e0a0000 1e0a1000 1e734094 0x00693094(6893716)
41e80000 41e81000 427048d0 0x008838d0(8927440)
大对象堆从0x02881000开始  段开始分配大小
02880000 02881000 02a36958 0x001b5958(1792344)
13010000 13011000 137c0020 0x007af020(8056864)

总大小0x378b9d8(58243544)

GC堆大小0x378b9d8(58243544)

1 个答案:

答案 0 :(得分:7)

395fe000 ( 940024) : 44.83% 54.41% : RegionUsageStack

避免同时运行一千个线程。