记一次.NET某培训学校系统 内存碎片分析

💡 原文中文,约7400字,阅读约需18分钟。
📝

内容提要

本文讲述了朋友遇到的Web系统内存无法释放的问题,通过WinDbg工具分析发现是托管内存的问题,进一步观察发现内存被Gen2占用且存在内存碎片化现象,查看托管堆和对象统计信息发现大量的Free对象导致内存无法回收,问题由System.Threading.OverlappedData持有的对象引起,最后总结了ReloadOnChange=true的问题,包括文件句柄暴涨、内存暴涨、内存碎片化和线程池暴涨,建议谨慎使用。

🎯

关键要点

  • 朋友的Web系统内存无法释放的问题
  • 使用WinDbg工具分析发现是托管内存的问题
  • 内存被Gen2占用且存在内存碎片化现象
  • 大量Free对象导致内存无法回收
  • 问题由System.Threading.OverlappedData持有的对象引起
  • 总结ReloadOnChange=true的问题,包括文件句柄暴涨、内存暴涨、内存碎片化和线程池暴涨
  • 建议谨慎使用ReloadOnChange=true
➡️

继续阅读