我有一个大型的.NET应用程序,目前的私有工作集大小为865 of。
所以我运行了VMMap,看到堆大约是587 So,托管堆只有255 So(也是私有工作集)。
让所有这些非托管代码使用如此多的内存(我认为.net运行时正在使用)是正常的吗?
注意事项:我使用了带有SOS扩展的WinDbg。问题不是托管堆中的内存消耗,而是“非托管”堆。
VMMap的截图:http://img687.imageshack.us/img687/1529/vmmap.png
更多信息:总大小:1487 WS注册:1359 WS私有:931 WS总计WS: 967 WS私人WS: 865 WS免费(大小):609 WS
提前谢谢。
发布于 2010-11-17 22:30:46
是!如果未正确释放非托管对象,甚至会导致更多内存泄漏。我曾经发现obcconnection对象占用了大量RAM (它试图打开/关闭循环中的连接)。如此之多,以致于该应用程序最终将失去记忆和崩溃。
您正在处理哪些非托管对象?
发布于 2010-11-17 22:34:27
使用CLRProfiler (http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a362781c-3870-43be-8926-862b40aa0cd0&DisplayLang=en)查看堆上有哪些对象。
注意:.NET 2.0版本也适用于.NET 4.0。
https://stackoverflow.com/questions/4209811
复制相似问题