我有一个VB.NET应用程序(带有C#库)随着时间的推移消耗大量内存。最终,应用程序耗尽内存。我对使用术语泄漏持谨慎态度,因为GC不应该允许内存泄漏,但可能在某处有一个大的.NET对象。如果是这样,我需要识别它。
但是我确实引用了第三方ActiveX控件库(.ocx),其中我使用了一些控件并进行了大量调用以检索激光束配置文件数据。仅当我运行从ocx检索激光束轮廓数据的循环时,内存使用量才会增加。我怀疑是ocx,但在联系供应商之前需要确定。
我在Visual Studio 2017中调试了我的应用程序,启用了内存工具的诊断工具,并且启用了选项内存启用本机堆分析并启用了快照。
我的问题是我在诊断工具的“内存使用情况”选项卡中根本没有看到图表中的大量内存。 30分钟后,我的应用程序大约为2GB并且是x86应用程序,这是一个问题 - 无论cpu架构真的如何。也许我在看错了。
那么找到内存问题我做错了什么?如何找到有问题的物品?
更新1
我运行了Performance Profiler,并没有看到诊断工具中看到的任何内存增加。任务管理器还确认在使用性能分析运行时不存在内存泄漏。之后没有进行分析的运行再次显示内存泄漏。