目前我正在做我的工作,确定了C#项目的内存分析,如果有因为这种应用程序需要的任何泄漏,有接近100%的正常运行时间成为可能。我开始使用蚂蚁内存分析器7.4版,并注意到我的非托管内存随着时间的推移不断增长,即使我的托管内存不是。非托管堆.NET应用程序的大小
更多经过试验,我尝试了一个程序,什么也不做,但块上的Console.ReadLine()
指令做了类似的分析。我运行了分析,并注意到同样的事情发生。我的非托管堆正在慢慢增长。实际上,它实际上只是在垃圾收集器被调用时(通过快照功能)而增长。现在为什么反复调用垃圾收集会导致非托管内存的不良增长?与ANTS有关吗?
我想用一些其他的工具,最好是像的WinDbg或SOS,以确定它认为我的非托管内存使用率。现在对我来说了解其中的内容并不重要 - 尽管这可能有助于长期调试。我只是试图确定当前正在运行的应用程序的非托管内存使用情况。我想看看这是否真的是蚂蚁的问题,或者是我对环境如何运作的误解。拥有某种.net,visual studio或windows工具可以为我提供有关我的流程的准确信息,这将有助于我解决这个问题。
是你的代码是100%的C#,还是有一些C++/CLI或非托管C++? – 2013-04-04 14:31:25
它是一个窗体项目吗? WindowsForm使用非托管窗口API来绘制对象 – Draykos 2013-04-04 14:32:54
对不起,我完全忽略了这些重要信息。我没有明确使用任何非托管代码。代码有一些线程并使用一些.net套接字对象。它也作为控制台应用程序运行 - 其中没有winform或wpf组件。最后,即使当我嘲笑所有的.net网络对象并摆脱了我的线程 - 我仍然看到了这一点。另外请记住,对于只有一行阻止ReadLine()的简单应用程序,我也看到了这种行为。 – user2245290 2013-04-04 14:35:27