1

我想获得一些关于如何诊断内存泄漏转储的指示;我不确定如何处理所提供的信息。以下是 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)所以我想知道问题是泄漏还是碎片。

4

1 回答 1

1

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

于 2013-10-30T08:13:13.860 回答