我有一個使用C++的VS 2005應用程序。它基本上將大約9 GB的大型XML導入到應用程序中。運行超過18小時後,它發生異常0xc0000006頁面錯誤。消耗的虛擬內存是2.6 GB(我已設置3GB)標誌。頁面錯誤0xc0000006與VC++
沒有任何一個有一個線索,是什麼原因導致這個錯誤,這可能是解決
我有一個使用C++的VS 2005應用程序。它基本上將大約9 GB的大型XML導入到應用程序中。運行超過18小時後,它發生異常0xc0000006頁面錯誤。消耗的虛擬內存是2.6 GB(我已設置3GB)標誌。頁面錯誤0xc0000006與VC++
沒有任何一個有一個線索,是什麼原因導致這個錯誤,這可能是解決
9GB似乎過於大,閱讀。我會說,即使是的3Gb一氣呵成太大。
是你的OS 64位?
什麼是最大頁面文件大小設置爲?
你有多少RAM?
你是在調試還是發佈模式下運行?
我建議您嘗試以較小的塊讀取XML。
你爲什麼試圖一次讀取這麼大的文件?
我想象你的應用程序花了這麼長時間才能運行,因爲它開始將文件複製到虛擬內存中,這基本上是硬盤上的一個大文件。因此,操作系統正在從磁盤讀取XML並將其寫回磁盤的不同區域。
**編輯 - 添加文本下面**
有過的外籍XML解析器快速瀏覽一下,如果你正在運行與堆棧或事件處理的問題它看起來,最有可能要添加太多到堆棧。
你確實需要堆棧上的3Gb數據嗎?在猜測,我會說你正在嘗試處理一個XML數據庫文件,但我無法想象你有一個很大的錶行。
我認爲你應該用它來搜索關鍵區域並放棄不需要的東西。
除了我剛纔讀到的有關Expat XML Parser的信息之外,我什麼也不知道,但會建議您不要以最有效的方式使用它。
而不是將整個文件加載到內存中,您可以使用SAX解析器僅將部分文件加載到內存。
好的 - 對不起,因爲延遲迴復你。你如何閱讀這個文件? – ChrisBD 2009-06-10 08:11:27
另外,一旦你有SAX事件,你會如何處理它給你的數據?這聽起來像你有內存泄漏。 – 2009-06-10 08:39:37