在 .Net 中,我正在加载一个带有字符串的 XmlDocument,当 xml 转换为 base64 时,该字符串会生成约 200KB 的文本文档。关键是,字符串应该分配给大对象堆。我从这里的阅读比较中知道 XmlReader 是读取字符串的最有效方式,但 XmlDocument 可能让我更直接地阅读,具有更多功能(xpath)。
我的 XML 的每个节点都应该是一个相当小的字符串,几乎没有指向大型对象堆。使用 Lutz .Net Reflector 似乎 XmlDocument 在内部使用链接节点。
最后,我的问题是:在使用 XmlDocument 时,加载这个节省了 ~200 KB(>85000 字节)的字符串是否会导致另一个对象指向 LOH。我们有点担心会导致堆碎片化并导致 OOM 错误。还是 XmlDocument 只是碰巧(至少对于我要询问的数据的情况)为托管堆创建了很多对象?