VC ++的页面错误0xc0000006

时间:2009-06-09 10:40:44

标签: winapi visual-c++

我有一个使用C ++的VS 2005应用程序。它基本上将大约9 GB的大型XML导入到应用程序中。运行超过18小时后,它发出异常0xc0000006页错误。消耗的虚拟内存为2.6 GB(我设置了3GB)标志。

是否有人知道导致此错误的原因以及可能的解决方案

2 个答案:

答案 0 :(得分:0)

9Gb看起来似乎过于庞大。我会说即使3Gb一次性也太大了。

你的操作系统是64位吗?

设置的最大页面文件大小是多少?

你有多少内存?

你是在调试或发布模式下运行吗?

我建议您尝试以较小的块读取XML。

你为什么要一次性阅读这么大的文件呢?

我认为你的应用程序在失败之前需要很长时间才能运行,因为它开始将文件复制到虚拟内存中,这基本上是硬盘上的一个大文件。因此,操作系统正在从磁盘读取XML并将其写回磁盘的不同区域。

**编辑 - 在**下面添加了文字

快速浏览Expat XML解析器后,看起来好像遇到堆栈或事件处理问题,很可能是你在堆栈中添加了太多。

你真的需要堆栈上的3Gb数据吗?猜测我会说你正在尝试处理XML数据库文件,但我无法想象你有一个如此大的表行。

我认为你应该用它来搜索关键区域并丢弃不想要的东西。

除了我刚刚读到的关于Expat XML Parser的内容之外我什么都不知道,但是我建议您不要以最有效的方式使用它。

答案 1 :(得分:0)

您可以使用SAX解析器仅将文件的一部分加载到内存中,而不是将整个文件加载到内存中。