如何诊断这个内存转储?

时间:2013-10-29 14:26:50

标签: .net debugging memory-leaks

我想获得一些关于如何诊断内存泄漏转储的指示;我不确定如何提供所提供的信息。以下是DebugDiag的摘要:

Type of Analysis Performed   Memory Pressure Analysis 
Machine Name    
Operating System   Windows 7Service Pack 1 
Number Of Processors    
Process ID   15120 
Process Image   [***.exe]
System Up-Time   7 day(s) 24:49:54 
Process Up-Time   3 day(s) 23:03:40 
Processor Type   X64 
Process Bitness   32-Bit 

Virtual Memory Summary

Size of largest free VM block   1,19 MBytes 
Free memory fragmentation   99,3% 
Free Memory   169,87 MBytes   (8,29% of Total Memory) 
Reserved Memory   1,05 GBytes   (52,43% of Total Memory) 
Committed Memory   804,26 MBytes   (39,27% of Total Memory) 
Total Memory   2 GBytes 
Largest free block at   0x00000000`393f0000 

Virtual Memory Details

Virtual Allocations  1,37 GBytes 
Loaded Modules  268,4 MBytes 
Threads  206,76 MBytes 
System 4 KBytes
Page Heaps 0 Bytes 
Native Heaps  1,56 MBytes

Virtual Allocation Summary

Reserved memory   894,86 MBytes 
Committed memory   506,48 MBytes 
Mapped memory   146,43 MBytes 
Reserved block count   1251 blocks 
Committed block count   2677 blocks 
Mapped block count   82 blocks 

应用程序死于“System.IO.IOException:没有足够的存储空间来处理此命令。”试图创建一个MemoryMappedView。它在执行期间反复创建和销毁内存映射文件。

我可以看到存在非常高的可用内存碎片(99.3%),但也有很少的可用内存(170MB),所以我想知道问题是否是漏洞或碎片。

1 个答案:

答案 0 :(得分:1)

转储不会显示有关应用程序内存的任何可疑信息。它看起来应用程序通常消耗了所有可用内存。您可以尝试更深入地使用其中一个内存配置文件(如WinDbg)分析.net内存的详细信息。有关如何执行此操作的详细信息,请参阅我的文章:http://alexatnet.com/articles/net-memory-management-and-garbage-collector