2009-06-09 63 views
0

我有一個使用C++的VS 2005應用程序。它基本上將大約9 GB的大型XML導入到應用程序中。運行超過18小時後,它發生異常0xc0000006頁面錯誤。消耗的虛擬內存是2.6 GB(我已設置3GB)標誌。頁面錯誤0xc0000006與VC++

沒有任何一個有一個線索,是什麼原因導致這個錯誤,這可能是解決

+0

好的 - 對不起,因爲延遲迴復你。你如何閱讀這個文件? – ChrisBD 2009-06-10 08:11:27

+0

另外,一旦你有SAX事件,你會如何處理它給你的數據?這聽起來像你有內存泄漏。 – 2009-06-10 08:39:37

回答

0

9GB似乎過於大,閱讀。我會說,即使是的3Gb一氣呵成太大。

是你的OS 64位?

什麼是最大頁面文件大小設置爲?

你有多少RAM?

你是在調試還是發佈模式下運行?

我建議您嘗試以較小的塊讀取XML。

你爲什麼試圖一次讀取這麼大的文件?

我想象你的應用程序花了這麼長時間才能運行,因爲它開始將文件複製到虛擬內存中,這基本上是硬盤上的一個大文件。因此,操作系統正在從磁盤讀取XML並將其寫回磁盤的不同區域。

**編輯 - 添加文本下面**

有過的外籍XML解析器快速瀏覽一下,如果你正在運行與堆棧或事件處理的問題它看起來,最有可能要添加太多到堆棧。

你確實需要堆棧上的3Gb數據嗎?在猜測,我會說你正在嘗試處理一個XML數據庫文件,但我無法想象你有一個很大的錶行。

我認爲你應該用它來搜索關鍵區域並放棄不需要的東西。

除了我剛纔讀到的有關Expat XML Parser的信息之外,我什麼也不知道,但會建議您不要以最有效的方式使用它。

0

而不是將整個文件加載到內存中,您可以使用SAX解析器僅將部分文件加載到內存。