2010-04-16 27 views
0

我正在處理來自服務器的XML,它包含一個C#函數(編譯的32位)中的圖像和數據。 當我嘗試在內存中解析這個xml時,它會給我System.OutOfMemory異常。x86 C#中的大數據處理給出了System.OutOfMemory異常

有什麼辦法可以避免這個錯誤嗎?

我的猜測是,系統找不到連續的50-100MB內存塊。 (我的電腦高清8Gig內存及其四核)

+1

你是說XML文件每個都是50-100MB?您使用的是什麼XML解析器?發佈您的代碼 – 2010-04-16 02:41:36

+0

你說這是一個服務器應用程序 - 你解析多少個併發的XML文檔?也許你可以限制在服務器上同時處理多少入站請求? – 2010-04-16 03:21:03

+0

@Michael,我得到一個XElement在我使用下面的代碼 - Encoding.UTF8.GetString(Convert.FromBase64String(xelement.Value.ToString()); 然後從這個輸出,我分別處理每個節點 @Romain,我一次只處理一個xml文檔。 – Cool 2010-04-16 21:32:22

回答

2

一個XML文件是50-100 MB的磁盤上將是一個lot較大時,解析成一個DOM。 (當然假設您使用的是XmlDocument或XDocument。)

雖然我鄙視API,但您可能希望考慮使用XmlReader來「流」文檔。它將比使用DOM更高效但使用起來不太直觀。