Недостаточно памяти .NETCF Windows Mobile 5

У нас есть приложение .NETCF 3.5, написанное на C#, в котором мы используем несколько довольно больших списков и словарей объектов, заполненных данными с SQL Server и сохраняемых в базах данных SQLCE на устройстве.

Приложение работало очень хорошо до недавнего времени. Объем данных таков, что мы довольно часто получаем исключения Out of memory. Используя событие Hibernate, я подтвердил, что ОС действительно просит приложение освободить ресурсы (событие Hibernate запускается постоянно). Загвоздка в том, что я действительно не вижу ничего существенного, что можно было бы освободить - списки, словари и т. д. все используются приложением.

Я знаю, что в Mobile 5/6 существует жесткое ограничение в 32 МБ на приложение (на самом деле только 18–20 МБ, согласно http://dev.fittingsites.com/bol/2008/windows-mobile-6).-1-memory-management-changes).

Я немного в недоумении здесь. Если для работы приложению требуется около 25 МБ, как оно может работать на Mobile 5? Существуют ли обходные пути, такие как хранение списков или словарей в файлах с отображением памяти или что-то подобное, которые не потребовали бы тонны работы (или сильно замедлили бы работу)?


person Laban    schedule 25.05.2011    source источник


Ответы (1)


Какой метод вы используете для чтения данных из базы данных SQLCE? SQLCE предлагает два основных подхода: наборы данных и Наборы результатов. Известно, что наборы данных потребляют огромное количество памяти и снижают производительность приложений. Если вы используете наборы данных, я бы рекомендовал попробовать переключить ваше приложение на использование наборов записей. Дополнительные сведения см. на этой странице.

person yms    schedule 29.05.2011
comment
Просто говорю. У меня есть мобильное приложение, которое везде использует наборы данных. Если бы у меня была информация о ResultSets пару лет назад, возможно, сейчас я бы не избавился от ошибок памяти. - person David Clarke; 03.05.2012