Memory leaks 在大对象堆上分配200mb对象时,32位.net应用程序内存不足
我有一个在.NET4.7上运行32位的应用程序。当应用程序启动时,它从服务器加载一组数据并将其缓存在内存中 在某个时间点,应用程序从服务器接收200mb缓冲列表,并尝试分配字节[],导致内存不足异常 在异常发生之前使用转储启动Windbg,我看到以下内容: 我注意到:Memory leaks 在大对象堆上分配200mb对象时,32位.net应用程序内存不足,memory-leaks,out-of-memory,clr,windbg,memory-fragmentation,Memory Leaks,Out Of Memory,Clr,Windbg,Memory Fragmentation,我有一个在.NET4.7上运行32位的应用程序。当应用程序启动时,它从服务器加载一组数据并将其缓存在内存中 在某个时间点,应用程序从服务器接收200mb缓冲列表,并尝试分配字节[],导致内存不足异常 在异常发生之前使用转储启动Windbg,我看到以下内容: 我注意到: MEM_FREE是621mb和 一块内存中只有114mb可用 如果我理解正确的话,这意味着操作系统愿意给我们更多的内存,但堆太分散,无法在一个地方分配所有内存 当我获得托管堆时!eeheap-gc我得到: 与GC堆之间的差
- MEM_FREE是621mb和
- 一块内存中只有114mb可用
- GEN0:1990对象,0.5mb
- 第1代:307个对象,0.8mb
- GEN2:?对象,600mb
- GEN3:105个对象,172mb