记一次 .NET 某光谱检测软件 内存暴涨分析
💡
原文中文,约6100字,阅读约需15分钟。
📝
内容提要
一名学员报告系统内存暴涨,分析发现是由于xxxWrapper.dll中的GetSpectrum函数未释放内存所致,反映了C++与C#团队沟通不畅的问题。
🎯
关键要点
- 学员报告系统内存暴涨,分析发现是由于xxxWrapper.dll中的GetSpectrum函数未释放内存所致。
- 分析过程中使用了多种命令观察内存使用情况,发现NT堆内存暴涨。
- 通过对堆进行分配排序,发现大量小块内存的分配导致内存占用过高。
- 最终确认问题源于C++与C#团队之间的沟通不畅,导致内存管理不当。
❓
延伸问答
内存暴涨的原因是什么?
内存暴涨是由于xxxWrapper.dll中的GetSpectrum函数未释放内存所致。
分析内存暴涨时使用了哪些命令?
分析过程中使用了!address -summary和!heap -s等命令观察内存使用情况。
内存暴涨的具体表现是什么?
表现为NT堆内存暴涨,分配了大量小块内存,导致内存占用过高。
C++与C#团队之间的问题是什么?
问题在于两者之间的沟通不畅,导致内存管理不当。
如何确认内存暴涨的源头?
通过对堆进行分配排序,发现大量小块内存的分配导致内存占用过高。
GetSpectrum函数的主要问题是什么?
GetSpectrum函数只进行了内存分配,没有调用相关的释放函数。
➡️