当前位置 : 主页 > 编程语言 > c语言 >

VB.Net XMLdocument内存管理

来源:互联网 收集:自由互联 发布时间:2021-06-24
Dim docu As New XmlDocument()docu.load("C:\bigfile.xml")Dim tempNode As XmlNodetempNode = docu.SelectSingleNode("/header/type")someArray(someIndex) = tempNode.innerText...do something more... 我正在使用XmlDocument()来加载一个巨大的
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.

网友评论