MSXML内存管理

时间:2010-11-29 08:51:29

标签: memory msxml

我使用Microsoft提供的COM和XML解析器来解析大约20个XML文件。该应用程序还使用库提供的API来解析XML文档。

MSXML3.0解析器似乎正在为缓存(垃圾收集)消耗大量内存。即使是垃圾的概念,如果有任何未来的引用,也会在缓存中引用相同的XML文档,但是在这里它会再次加载相同的XML文件,这会增加我的应用程序的内存使用量。

我也尝试使用DevPartner工具进行调试,它似乎无法帮助我解决这个问题。因为它没有显示任何内存泄漏,但任务管理器中的内存使用量不断增加。

我从下面的链接了解了垃圾收集:

http://support.microsoft.com/kb/304227

它告诉通过更改redit条目'NoFullGC'来禁用垃圾收集,然后我按照这个来找到这个键但是我找不到它。我甚至在regedit中找不到MSXML3.0。

另一件令我觉得奇怪的是,一旦我最小化应用程序窗口,这个进程分配的内存就被释放了。 (这对我来说非常奇怪)。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

GC并不意味着内存泄漏。因此,内存诊断工具在这里无法帮助 - 或者它必须是误报。

为了减轻GC的内存消耗,您可能需要:

  • 如果可能,请切换到XmlLite。它在所有受支持的Windows中都可用。
  • 尝试使用KB文章中指定的DllCanUnloadNow强制GC。

我不确定如何最小化窗口可以启动GC,但这必须启动GC以便以后回收内存。