2010-08-27 2 views
2

Приложение .NET CF 3.5 получает исключение Out of memory, когда DOM обрабатывает XML-файл размером 2 МБ. Теперь я понимаю, что это должно быть изменено на обработку SAX, но мне было интересно, почему эта ошибка получена..NET compact framework и управление памятью: OOM Exception

От http://blogs.msdn.com/b/mikezintel/archive/2004/12/08/278153.aspx, «Windows CE создает еще одно виртуальное адресное пространство размером 1G для больших распределений». «Виртуальное адресное пространство приложения на 32 МБ может сильно поддаваться большому приложению, и если оно становится достаточно фрагментированным, это может привести к ошибкам OOM, даже если имеется свободная физическая память».

Означает ли это, что если размер кучи моего приложения, включая DOM, занимает больше памяти, чем 32 МБ, приложение будет аварийно завершено, но тогда он не сможет использовать больше виртуального адресного пространства 1 ГБ для этого распределения?

ответ

0

Из того, что я помню, все обычные данные (и связанные объекты) живут в виртуальном адресном пространстве 32 Мб для приложения - для использования дополнительного адресного пространства 1 Гб необходимо изучить отображение памяти. Конечно, альтернативой в вашем случае будет обработка на основе потока.

0

Мы обнаружили, что это очень полезное объяснение (и решение!) Для проблем с памятью CF. Мы успешно используем эту методологию для приложений, для которых были проблемы с использованием утилит Intermec (у нас были проблемы с P/Invoke - пространство VM для нашего приложения было полностью использовано, поэтому DLL P/Invoke не удалось загрузить.)

http://robtiffany.com/mobile-development/memmaker-for-the-net-compact-framework

Смежные вопросы