Я внезапно получаю ошибки исключения памяти для двух программ, работающих на разных компьютерах, и хотя кажется, что памяти достаточно, она все еще появляется. Я создаю несколько потоков в программе, поэтому не уверен, что это подходит для этого форума, но может ли это быть чем-то другим, связанным с визуальной студией или это определенно проблема с памятью. Одна программа работает на моем рабочем столе, используя визуальную студию 2008 с 2 ГБ оперативной памяти. Другой работает на сервере Windows 2003 с 4 ГБ оперативной памяти, используя визуальный базовый 2008 Express. Теперь модуль принимает большой XML-файл, который считывается в строку, а затем разбивается и сохраняется в массиве строк. Теперь количество кусков может быть до 10000. Теперь я знаю, что это большой, но я работаю над этим уже более месяца и никогда не имел проблемы. Единственная другая возможная проблема, которую я заметил, заключалась в том, что у меня не хватило места на моем жестком диске, но это было быстро разрешено с помощью очистки. О да, процессор для моей машины - это дуо-ядро, установленное на 2.13 ГГц. Это консольная программа, которая создает несколько веб-записей, но проблема с памятью возникает в одном конкретном модуле только в том виде, как я объяснял выше.Исключение типа 'System.OutOfMemoryException' было сброшено
Public Shared Function textLoad(ByVal _html As String) As Boolean
Try
//_html is the filestream that was read in
Dim defaultHeading = "xmlns:gnip=""http://www.gnip.com/schemas/2010"" xmlns=""http://www.w3.org/2005/Atom"""
Dim header_of_xml As String = "<?xml version=""1.0"" encoding=""utf-8""?>" & vbNewLine & "<entry " & defaultHeading & ">"
Dim footer_of_xml As String = "</entry>"
Dim entry As String = String.Empty
Dim xrs As XmlReaderSettings = New XmlReaderSettings()
Dim dupeArray As New ArrayList
Dim stringSplitter() As String = {"</entry>"}
//split the file content based on the closing entry tag
sampleResults = Nothing
sampleResults = _html.Split(stringSplitter, StringSplitOptions.RemoveEmptyEntries)
entryResults.Clear()
If getEntryId(sampleResults) Then
// the following loops seem clumsy but I wanted to dedupe the lists to //ensure that I am not adding duplicate entries and I do this by going to the getEntryID //method and extracting the ids and then comparing them below
For i As Integer = 0 To sampleResults.Count - 1
For j As Integer = 0 To idList.Count - 1
If sampleResults(i).Contains(idList.Item(j)) AndAlso Not dupeArray.Contains(idList.Item(j)) Then
dupeArray.Add(idList.Item(j))
entry = sampleResults(i)
Я смотрю на менеджер задач для определения ресурсов, используемых этой программой, и это то, что происходит:
Parser.exe CPU = 34 использование MEM = 349,500 K
ничего более интенсивное работает
Edit _ -
Разобрался exac где возникает проблема:
**sampleResults = _html.Split(stringSplitter, StringSplitOptions.RemoveEmptyEntries)**
Может ли кто-нибудь заметить что-то не так с этим?
Это, вероятно, принадлежит на stackoverflow.com, но у меня нет достаточно респ голоса, чтобы закрыть. –
@TomasLycken вы всегда можете отметить это -> Флаг -> Здесь не принадлежит -> Принадлежит X. – Sathya
@vbNewbie, пожалуйста, предоставьте более подробную информацию - это приложение, которое вы создаете? Каковы ваши технические характеристики системы - например, процессор, AMount RAM и др. – Sathya