Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio诊断工具不显示进程内存_C#_Vb.net_Memory Leaks_Out Of Memory_Activex - Fatal编程技术网

C# Visual Studio诊断工具不显示进程内存

C# Visual Studio诊断工具不显示进程内存,c#,vb.net,memory-leaks,out-of-memory,activex,C#,Vb.net,Memory Leaks,Out Of Memory,Activex,我有一个VB.NET应用程序(带有C#库),随着时间的推移,它会消耗大量内存。最终应用程序会耗尽内存。我对使用泄漏一词持谨慎态度,因为GC不应该允许内存泄漏,但可能在某个地方有一个大的.NET对象。如果是这样,我需要确定它 但是,我确实参考了第三方ActiveX控件库(.ocx),我使用了其中的一些控件,并多次调用检索激光束轮廓数据。只有当我运行从ocx检索激光束轮廓数据的循环时,内存使用才会增加。我怀疑ocx,但需要在联系供应商之前确定 我在Visual Studio 2017中调试了我的应用

我有一个VB.NET应用程序(带有C#库),随着时间的推移,它会消耗大量内存。最终应用程序会耗尽内存。我对使用泄漏一词持谨慎态度,因为GC不应该允许内存泄漏,但可能在某个地方有一个大的.NET对象。如果是这样,我需要确定它

但是,我确实参考了第三方ActiveX控件库(.ocx),我使用了其中的一些控件,并多次调用检索激光束轮廓数据。只有当我运行从ocx检索激光束轮廓数据的循环时,内存使用才会增加。我怀疑ocx,但需要在联系供应商之前确定

我在Visual Studio 2017中调试了我的应用程序,启用了内存工具的诊断工具,启用了快照的选项内存启用本机堆评测

我的问题是,在诊断工具的内存使用选项卡中,我根本看不到图表中的大量内存。30分钟后,我的应用程序大约是2GB,并且是x86应用程序,这是一个问题——实际上与cpu体系结构无关。也许我看错了东西

那么,我在发现内存问题时做错了什么?我怎样才能找到冒犯的对象

更新1

我运行了Performance Profiler,没有看到诊断工具中的内存增加。任务管理器还确认在运行性能评测时不存在内存泄漏。之后在不进行分析的情况下运行会再次显示内存泄漏


我也有同样的问题。您找到解决方案了吗?也许性能分析器时不时地引入GC?有时对于X86应用程序,如果应用程序的分配/取消分配速度非常快,则实际上必须强制执行GC。(是的,我知道这违背了最佳实践,但GC算法并不完美)。其他尝试事项:在两个时间点创建应用程序的完整迷你转储,并使用VS比较这些转储以进行内存泄漏分析。还可以使用其他探查器,如dotMemory或ANTS。第三方ActiveX控件库是否使用VirtualAlloc API直接从虚拟内存分配内存?这可以显示为非常大的专用字节与工作集计数器。