我想获得一些关于如何诊断内存泄漏转储的指示;我不确定如何提供所提供的信息。以下是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),所以我想知道问题是否是漏洞或碎片。
答案 0 :(得分:1)
转储不会显示有关应用程序内存的任何可疑信息。它看起来应用程序通常消耗了所有可用内存。您可以尝试更深入地使用其中一个内存配置文件(如WinDbg)分析.net内存的详细信息。有关如何执行此操作的详细信息,请参阅我的文章:http://alexatnet.com/articles/net-memory-management-and-garbage-collector