高非托管内存 - WPF应用程序

时间:2012-07-11 15:07:43

标签: wpf memory-management unmanaged-memory

我即将部署我的新WPF应用程序,我刚刚在任务管理器中注意到它消耗了大量内存。所以我下载了RedGate Antz的试用版,试图找出造成这个问题的原因,看到大约90 MB的非托管内存使用情况让我很震惊。因为Antz不支持未损坏的内存,所以我尝试使用Windbg,它并没有指出高使用率本身。这让我相信它必须是我正在加载的DLL之一。我在我的应用程序中使用了DevExpress控件。

一个有趣的功能是当我最小化我的应用程序时,内存从110 MB下降到大约6-10 MB。

我应该担心/担心吗?

这是我的第一个WPF应用程序,我不完全确定在内存使用方面会有什么期望。最小化这个记忆的事实是重新获得/放弃了一切都好的迹象吗?

任何有关可能导致此问题的想法或想法都会非常有用。

1 个答案:

答案 0 :(得分:2)

如果你想知道造成它的原因,我已经和SciTech的.Net Memory Profiler(memprofiler.com)好运了。

由于.Net运行时的性质,如果你在拥有足够内存的机器上运行,那么它通常会尝试使用它。如果您开始看到与之相关的性能问题,那么您应该担心,通常最好不要注意使用资源的内容。内存丢失的一个可能原因是其中一个DLL可能挂钩到您的主Window事件并在最小化时调用垃圾收集。

如果您担心高内存使用率的感觉,可以使用一些技巧来按摩TaskManager中显示的数字(比如p /调用SetProcessWorkingSetSize),但这似乎不是你真正的'再问一下。