我需要解析一个xml文件,它实际上是一个非常大的树结构的图像,所以我使用XmlReader类来“动态”填充树.每个节点只通过ReadSubtree()函数从其父节点传递它所期望的xml块.这样做的好处是不必担心节点何时消耗了它的所有子节点.但现在我想知道这是否真的是一个好主意,因为可能有数千个节点,在阅读.NET源文件时,我发现每次ReadSubtree调用都会创建一些(可能更多)新对象,并且没有对可重用对象进行缓存(我已经看过).
也许ReadSubtree()不被认为是大量使用,或者我只是担心什么都没有,我只需要在解析文件后调用GC.Collect()…
希望有人可以对此有所了解.
提前致谢.
更新:
感谢您提供的精彩而富有洞察力的答案.
我深入研究了.NET源代码,发现它比我想象的要复杂得多.我终于放弃了在这种情况下调用此函数的想法.正如Stefan指出的那样,xml阅读器永远不会传递给局外人,我可以信任解析xml流的代码(由我自己编写),所以我宁愿强迫每个节点负责他们的数据量.从流中窃取比使用不那么精简的ReadSubtree()函数来保存几行代码.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。