记一次 .NET某家装ERP 内存暴涨分析
原文中文,约9200字,阅读约需22分钟。
📝
内容提要
微信上一位老朋友找到作者,程序运行时内存突然爆高,分析发现是由于LOH默认不启用压缩回收,使用BinaryFormatter序列化,RowCount为1.7W,解决方案有:强制LOH压缩,分批次获取。
🎯
关键要点
-
一位老朋友在微信上求助,程序内存突然暴高,怀疑内存泄露。
-
使用 WinDbg 分析,确认是托管内存问题,托管堆占用 12G 内存。
-
通过 !dumpheap -stat 发现 System.Byte[] 数组占用大量内存,特别是大数组。
-
GC 默认不启用 LOH 压缩回收,导致内存使用不当,出现内存暴涨现象。
-
通过分析,发现是序列化一个巨大的 DataTable 导致内存暴涨。
-
解决方案包括强制 LOH 压缩和分批次获取数据。
🏷️