首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我能否强制.NET XmlDocument实例更快地释放它所保存的内存?

我能否强制.NET XmlDocument实例更快地释放它所保存的内存?
EN

Stack Overflow用户
提问于 2012-08-14 21:28:42
回答 1查看 685关注 0票数 3

我有一个Mono应用程序,它使用.NET XmlDocument类读取XML文件。每一份文件大约180 K。

在解析每个文档并创建自己的内部数据结构之后,我不保留对XmlDocument实例的引用,因此它就有资格进行垃圾收集。

但问题是,在收集之前需要5-6秒,如果我在5-6秒内加载多个文档,我的应用程序就会崩溃到操作系统,没有打印错误消息,也没有抛出异常等等。它只是说线程12已经退出(我没有创建任何额外的线程,所以我不明白为什么它也是12线程-- XmlDocument的线程?)

如果我加载文档1,然后等待5秒,然后加载文档2,等待5秒,然后加载文档3,等等,那么一切都没问题。

在这种情况下,在5秒的等待过程中,我可以看到GC在4-5个周期内多次启动并释放大约1MB的内存(一些标记为显式,有些被标记为并发)。

我还尝试按照我发现的一篇文章的建议,在完成xmlDocument.RemoveAll()之后添加一个调用。在此之后,我还添加了对GC.Collect()的调用。它稍微有所帮助,但它仍然崩溃,只是稍微少了一些。

您知道如何增加可用内存或使XmlDocument运行得更好吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-15 20:38:59

与其说这是一个答案,不如说它是一个替代方案,但我使用XmlTextReader重写了我的XML解析代码,这个问题不再发生。

当然,XmlTextReader不需要将整个XML文件加载到内存中,这对内存的使用有很大的帮助。

我可以非常快地加载多个文件,一个接一个,现在没有崩溃。

XmlTextReader API还需要做更多的工作,但现在情况似乎相当稳定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11961020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档