Memory MSXML内存管理

Memory MSXML内存管理,memory,msxml,Memory,Msxml,我正在使用微软提供的COM和XML解析器来解析大约20个XML文件。应用程序还使用库提供的API来解析XML文档 MSXML3.0解析器似乎正在为缓存(垃圾收集)消耗大量内存。即使垃圾的概念是在缓存中引用相同的XML文档(如果将来有任何引用),但在这里它再次多次加载相同的XML数据,从而增加了应用程序的内存使用 我还尝试过使用DevPartner工具进行调试,但它似乎并没有帮我解决这个问题。因为它没有为此显示任何内存泄漏,但任务管理器中的内存使用率一直在增加 我是通过以下链接了解垃圾收集的:

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

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

我还尝试过使用DevPartner工具进行调试,但它似乎并没有帮我解决这个问题。因为它没有为此显示任何内存泄漏,但任务管理器中的内存使用率一直在增加

我是通过以下链接了解垃圾收集的:

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


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


请帮我解决这个问题。

GC并不意味着内存泄漏。因此,内存诊断工具在这里帮不上忙——或者它一定是一个假警报

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

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

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

GC并不意味着内存泄漏。因此,内存诊断工具在这里帮不上忙——或者它一定是一个假警报

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

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

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

我发现另一件奇怪的事情是,在最小化应用程序窗口后,此进程分配的内存被释放。(这对我来说非常奇怪)。当你最小化一个窗口时,你看到的是被窗口清空的“工作集”。通常最好看一下“提交大小”数字(或XP及更早版本中的“VM大小”),这是您要求的内存量(工作集是Windows给您的内存量)。另一件我觉得奇怪的事情是,在最小化应用程序窗口后,此进程分配的内存被释放。(这对我来说非常奇怪)。当你最小化一个窗口时,你看到的是被窗口清空的“工作集”。通常最好查看“提交大小”数字(或XP及更早版本中的“VM大小”),这是您要求的内存量(工作集是Windows给您的内存量)。