【发布时间】:2010-04-06 10:48:04
【问题描述】:
我们发现在使用 XmlDocument 的 .NET Web 应用程序中内存使用率非常高。 一个小的 (~5MB) XML 文档被加载到一个 XmlDocument 对象中并存储在 HttpContext.Cache 中,以便在每次加载页面时进行查询和 XSLT 转换。 XML 会定期在磁盘上进行修改,因此缓存依赖于文件。
这样的应用程序似乎使用了数百兆的 RAM。
我已经尝试在每次请求开始时请求垃圾收集,这可以使 RAM 使用率大大降低,但我无法想象这是一个好的做法。
对于我们如何实现相同的目标但 RAM 使用率更低,是否有人有任何建议?
【问题讨论】:
-
我怀疑问题中的“似乎正在使用”。如果您使用虚拟(尽可能接近零 MB)XML 文档,您的内存使用量会相应下降吗?内存是 XML 文档还是 XSLT 转换?
-
如果不管它,内存使用量会继续增长还是随着时间的推移稳定?
-
Binary Worrier - 我说“出现”是因为使用了几种技术来观察内存使用量的增加,我无法给你一个确切的数字,但它肯定会上升。我相信它是 XML 文档而不是转换。 AnthonyWJones - 在页面加载之间空闲时它会稳定下来,即使流量持续不断,它也会随着时间的推移而趋于平稳,即它不会永远继续增长。
-
在这种情况下,这可能很正常,如果您的内存没有其他需求,.NET 可能不必太在意快速释放内存。
标签: .net xml caching xmldocument