2011-01-20 62 views
2

使用Web服務檢索大數據時,我面臨內存不足異常。它適用於少量的數據。現在在生產中使用大於3到4 GB的大量數據,面臨內存不足異常。這裏我們使用xml序列化和反序列化。使用Web服務檢索大數據時出現內存不足異常

任何幫助,將不勝感激。 alt text

+2

不確定你在找什麼幫助,但我懷疑你不會喜歡答案。 1.發送更小的數據塊,2.移至64位解決方案,確保系統中有足夠的可用內存,理想情況下爲物理內存。 – Lazarus 2011-01-20 13:07:54

+0

可用內存與它很少有關係。發生什麼事是運行時正試圖分配大塊連續內存,這是無法找到的。 – 2011-01-20 13:09:40

回答

2

我花了一段時間尋找到的內存不足的問題,同時處理XML。以下是一些提示和建議:

1)在32位機器上的最大進程大小可以是2GB,並且如果啓動開關特定的話,3GB。所以使用64位套件是必須的。

2)運行perfmon.exe來收集示例,看看在崩潰之前,您的進程有多大的內存使用量。如果你在64位上運行,確保它被編譯爲64位,否則它將使用WOW和32位模式運行它。

3)在.NET 1.1中,如果使用XmlDocument進行處理,加載100MB XML需要600-800MB的空間。在.NET 2.0和更高版本中,它是3-4倍,但仍然相當可觀。儘可能避免XmlDocument

4)這我認爲可以是你的問題:避免重新創建你的序列化器。 .NET實際上吐出代碼並將它們編譯成不可卸載的程序集,並且會導致內存泄漏這是已知問題,並且也發生在XSLT轉換中。始終緩存你的序列化程序。

相關問題