跟踪OutOfMemory异常?

时间:2012-05-20 18:38:43

标签: vb.net string clr out-of-memory

我有一个用VB.NET 2010编写的应用程序,它用于将XML数据作为字符串加载,并且在加载之前执行一些非常复杂的解析来修复XML结构和记录无法进行逻辑修复的元素一个XMLDocument对象。

问题我在文件长大60+ MB范围时,在尝试读取文件时抛出OutOfMemory异常。

我声明了一个字符串,并且我使用IO.StreamReader.ReadToEnd()将整个文件读入字符串

如果我通过相同的方法在空白的应用程序中读取相同的文件,它就没有问题。

它运行的机器是W764 8GB ram,在我加载文件时空闲5。 在ReadToEnd()之前,应用程序的内存使用量为10mb,调试器在ReadToEnd()上打破,而不是任何潜在的开发人员导致处理膨胀。

我无法最大化内存,当文件读完时,空白应用程序将文件读​​取到350mb左右的字符串级别。

所以我没有得到的是如何在空白应用程序和生产应用程序之间调用失败,也许其他一些对象的内存保留在任务管理器中没有显示?但实际上,5gb空闲加载< 100mb的数据。

我也不知道如何进一步跟踪它,因为它发生在CLR的方法中,而不是开发人员代码,任何建议都非常感激。

 Dim Data As String

    Using reader As New StreamReader(fileName)
        Data = reader.ReadToEnd() <- Breaks here
    End Using

0 个答案:

没有答案