Ошибка страницы 0xc0000006 с VC ++ - PullRequest
0 голосов
/ 09 июня 2009

У меня есть приложение VS 2005, использующее C ++. Это в основном импорт большого XML размером около 9 ГБ в приложение. После более 18 часов работы он выдал исключение 0xc0000006 In page error. Используется виртуальная память 2,6 ГБ (я установил 3 ГБ).

Кто-нибудь знает, что вызвало эту ошибку и что может быть решением

Ответы [ 2 ]

0 голосов
/ 09 июня 2009

Вместо загрузки всего файла в память вы можете использовать SAX парсеры для загрузки только части файла в память.

0 голосов
/ 09 июня 2009

9Gb кажется слишком большим для чтения. Я бы сказал, что даже 3Gb слишком велик за один раз.

Ваша ОС 64-битная?

Какой максимальный размер файла подкачки установлен?

Сколько у вас оперативной памяти?

Работали ли вы в режиме отладки или выпуска?

Я бы посоветовал вам попробовать прочитать XML более мелкими порциями.

Почему вы пытаетесь прочитать такой большой файл за один раз?

Я полагаю, что вашему приложению потребовалось так много времени для запуска, прежде чем оно перестало работать, поскольку оно начало копировать файл в виртуальную память, которая представляет собой большой файл на жестком диске. Таким образом, ОС считывает XML с диска и записывает его обратно в другую область диска.

** Правка - добавлен текст ниже **

После быстрого просмотра парсера Expat XML все выглядит так, как будто у вас возникают проблемы со стеком или обработкой событий, скорее всего, вы добавляете слишком много в стек.

Вам действительно нужно 3 Гб данных в стеке? Возможно, я бы сказал, что вы пытаетесь обработать файл базы данных XML, но я не могу представить, что у вас есть строка таблицы, которая настолько велика.

Я думаю, что на самом деле вы должны использовать его для поиска ключевых областей и отбросить то, что не нужно.

Я ничего не знаю, кроме того, что я только что прочитал об XML-парсере Expat, но могу предположить, что вы используете его не самым эффективным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...