堆栈内存 vs 托管堆栈内存

3
我有一个大型.NET应用程序,目前的私有工作集大小为865MB。
因此,我运行了VMMap,并发现堆约为587MB,托管堆仅为255MB(也是私有工作集)。
所有这些非托管代码使用如此多的内存(我想是由.net运行时使用的)是否正常?
注意:我已经使用带有SOS扩展的WinDbg。问题不在于托管堆中的内存消耗,而在于“非托管”堆中。
VMMap的截图:http://img687.imageshack.us/img687/1529/vmmap.png 更多信息: 总大小:1487MB 已提交:1359MB 私有:931MB 总WS:967MB 私人WS:865MB 空闲(大小):609MB
提前致谢。
2个回答

0

是的!如果未正确释放未托管的对象,甚至可能导致更多的内存泄漏。我曾经发现obcconnection对象吃掉了几个G的RAM(它试图在循环中打开/关闭连接)。如此之多,以至于应用程序最终会耗尽内存并崩溃。

你正在处理哪些未托管的对象?


0

也许更轻巧且快速启动的选项是 SOS。http://msdn.microsoft.com/en-us/library/bb190764.aspx - user44298
其实我认为这并没有什么帮助,因为我已经在WinDbg中分析了托管堆中的CLR对象,一切都看起来很好。 - Tiago

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接