Поделиться через


Управление памятью устройства в платформе .NET Compact Framework

Обновлен: Ноябрь 2007

Важным преимуществом платформы .NET Compact Framework является эффективное использование ресурсов, особенно энергозависимого ОЗУ. Устройства необязательно должны иметь аппаратные диспетчеры памяти или виртуальную память операционной системы.

Размер хранилища в платформе .NET Compact Framework

Для платформы .NET Compact Framework, версия 3.5 см. раздел с описанием установки CAB-файлов. Еще не существует версии платформы .NET Compact Framework, версия 3.5, размещаемой в ПЗУ.

Для платформы .NET Compact Framework, версия 2.0 используется следующий размер хранилища: 

  • 5,5 МБ (ПЗУ), без сжатия, под управлением Windows Mobile 5.0.
s6x0c3a4.alert_note(ru-ru,VS.90).gifПримечание.

Сжатие постоянного хранилища не выполняется, начиная с Windows Mobile 5.0.

Для платформы .NET Compact Framework, версия 1.0 используется следующий размер хранилища:

  • 1,55 МБ (ПЗУ), со сжатием, под управлением Pocket PC 2000 и 2002.

  • 1,35 МБ (ПЗУ), со сжатием, под управлением Windows Mobile 2003 для карманных ПК и Windows Mobile 2003 для смартфонов.

Требования к ОЗУ для запуска:

  • 0,5 МБ + (зависит от приложения).

Типичные размеры приложений:

  • 5 – 100 КБ.

Установка CAB-файлов

Во время установки платформы .NET Compact Framework версии 2.0 с пакетом обновления 1 (SP1) или более поздней версии выдается запрос, позволяющий выполнить установку на устройство или на карту памяти, если она установлена. Если выбрана установка на карту памяти, глобальный кэш сборок помещается на карту памяти, а файлы среды CLR помещаются в каталог "\Windows". В платформе .NET Compact Framework, версия 3.5 для глобального кэша сборок требуется приблизительно 5,2 МБ свободного места, а для среды CLR — 1,3 МБ.

Производительность платформы .NET Compact Framework при установке CAB-файлов зависит от использования памяти аппаратным и программным обеспечением. Для некоторых устройств можно добиться повышенной производительности, установив глобальный кэш сборок на карту памяти.

Использование памяти

Оптимальная работа платформы .NET Compact Framework обеспечивается на системах, обладающих следующими характеристиками:

  • Работа от батареек или аккумуляторов.

  • Емкость файловой системы на основе флэш-памяти или ОЗУ, приблизительно в 5 – 10 раз превышающая размер платформы .NET Compact Framework и ее приложений и позволяющая хранить их в динамическом ОЗУ (DRAM). 

  • От 128 КБ до 1 МБ в памяти DRAM для выполнения рабочих задач.

  • Дополнительный жесткий диск.

Платформа .NET Compact Framework тщательно отслеживает использование доступной в системе памяти. Доступ к ПЗУ не производится, пока не будет запущено приложение. Кроме того, платформа .NET Compact Framework освобождает ОЗУ после завершения работы программ. Собственная операционная система может не располагать средствами защиты памяти. При доступе к памяти без соответствующих прав всегда возникают исключения.

Когда памяти недостаточно, платформа .NET Compact Framework активно освобождает память от внутренних структур данных, которые не требуются для выполняемого в данный момент кода. Благодаря этому программа продолжает выполняться даже при нехватке памяти. Если приложению требуется больше памяти, чем доступно в системе, платформа .NET Compact Framework завершает работу этого приложения и освобождает все используемые им ресурсы. Работа самой платформы .NET Compact Framework выполняется без сбоев даже при нехватке памяти.

Узел домена приложения запускает приложения и среду CLR платформы .NET Compact Framework. Приложения .NET Compact Framework используют пространство кода и статическое и динамическое пространство данных одинаково — как собственные приложения. Когда запущенные приложения .NET Compact Framework отсутствуют, то ОЗУ остается практически свободным, в нем находится только узел домена приложения и немного статических данных, используемых средой CLR. Windows CE .NET создает узел домена приложения при запуске приложения .NET Compact Framework.

Приложения .NET Compact Framework упакованы в exe- и dll-файлы, которые можно хранить на флэш-памяти в файловой системе, доступной только для чтения или для чтения и записи (или в ПЗУ для обеспечения доступа только для чтения). Загрузчик классов среды CLR может осуществлять чтение этих файлов в виде напрямую адресуемых блоков без создания копии памяти и без создания диспетчером памяти представления отображения памяти для нужного файла.

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

Хранилище ОЗУ

ОЗУ используется для хранения динамических структур данных и JIT-скомпилированного кода. Платформа .NET Compact Framework использует доступную память ОЗУ в пределах, заданных устройством, для кэширования созданного кода и структур данных, а затем освобождает память, когда это необходимо.

Среда CLR использует разбивку кода на фрагменты для освобождения блоков JIT-скомпилированного кода во время выполнения при нехватке памяти. Это позволяет выполнять большие программы на системах с небольшим объемом ОЗУ с минимальным снижением производительности.

Хранилище ПЗУ

Машинный код, формирующий среду CLR, может находиться в файловой системе, расположенной в ПЗУ или ОЗУ. При нехватке памяти платформа .NET Compact Framework использует доступную память ПЗУ, флэш-память или пространство на диске для продолжения выполнения приложений с пониженной производительностью.

Файлы, содержащие инструкции MSIL и метаданные для библиотек классов, хранятся в файловой системе, расположенной в ПЗУ или ОЗУ. Библиотеки классов можно загрузить в файловую систему, доступную для чтения и записи, в рамках процедуры установки загружаемых приложений.

См. также

Задачи

Практическое руководство. Улучшение производительности

Основные понятия

Автоматическое управление памятью

Другие ресурсы

Общие сведения об архитектуре .NET Compact Framework