VB.Net XML文档内存管理

标签 vb.net memory-leaks linq-to-xml xmldocument xmlreader

Dim docu As New XmlDocument()
docu.load("C:\bigfile.xml")

Dim tempNode As XmlNode
tempNode = docu.SelectSingleNode("/header/type")

someArray(someIndex) = tempNode.innerText

...do something more...

我正在使用 XmlDocument() 加载一个巨大的 XML 文档 (100~300MB)

当我打开文档并将其作为字符串读取时,我的应用程序使用大约900MB RAM。 我想知道为什么会发生这种情况以及如何预防它?

请注意:即使 XmlDocument 也没有 Dispose() 来删除分配的内容。 虽然我在应用程序的后面部分需要巨大 XML 文件的整个字符串,但 /header/type.innerText 只是一个单词

<小时/>

更多来源:

Private Sub setInfo(ByVal notePath As String)

        Dim _NOTE As XDocument

        _NOTE = XDocument.Load(notePath)

        If (From node In _NOTE...<title> Select node).Value = "" Then
            lvlist.Items.Add("No Title")
        Else
            lvlist.Items.Add((From node In _NOTE...<title> Select node).Value)
        End If

        lvlist.Items(lvlist.Items.Count - 1).SubItems.Add((From node In _NOTE...<group> Select node).Count)


End Sub

它读取 XML 文档、计算标签数量并检索字符串值。就这样。 获得这些值后,_NOTE (XDocument) 此时就没用了。

最佳答案

XmlReader可能会解决您的需求。来自 MSDN:

Represents a reader that provides fast, noncached, forward-only access to XML data.

关于VB.Net XML文档内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21916443/

相关文章:

c# - 如何获取具有 : in its name? 的元素

c# - 通过 XPathSelectElements 获取具有命名空间的 XElement

vb.net - 视觉上比较两个图像

vb.net - 在 vb.net 的 datagridviewimagecolumn 中显示图像

android - 需要帮助了解我的 Android 应用程序中的内存泄漏

ios - 方法泄漏中的对象

.net - 在学习 LINQ to XML 之前我应该​​了解哪些 XML 相关技术?

c# - Zedgraph X 轴缩放值

asp.net - 未选择列表框项目 (ASP/VB.NET)

c - 使用相同的左值多次调用 strdup()