导航

忆龙2009:.NET Compact Framework 中的设备内存管理

Posted on 2010-01-16 20:53  忆龙2009  阅读(131)  评论(0编辑  收藏  举报

.NET Compact Framework 的一个重要功能是高效使用资源,尤其是易失性 RAM。设备不必有硬件内存管理单元 (MMU) 或操作系统虚拟内存。

.NET Compact Framework 的存储大小

对于 .NET Compact Framework 2.0 版,存储大小如下:

  • 在 Windows Mobile 5.0 上为 5.5 MB (ROM)(未压缩)。

注意:

使用 Windows Mobile 5.0 启动时,不再压缩永久性存储。

对于 .NET Compact Framework 1.0 版,存储大小如下:

  • 在 Pocket PC 2000/2002 上为 1.55MB (ROM)(未压缩)

  • 在 Windows Mobile 2003 for Pocket PC 和 Windows Mobile 2003 for Smartphone 上为 1.35MB (ROM)(未压缩)。

RAM 运行要求:

  • .5 MB+(取决于应用程序)

典型的应用程序大小:

  • 5 - 100 KB

CAB 文件安装

在 .NET Compact Framework 2.0 SP1 版本的安装过程中,会提示您安装到设备或存储卡(如果存在)。如果选择安装到存储区,则将全局程序集缓存放置到存储卡上并将公共语言运行库 (CLR) 的文件放置在 \Windows 目录中。全局程序集缓存需要大约 4.5 MB 的空间,而 CLR 需要 1.0 MB 的空间。

对于 CAB 文件安装,.NET Compact Framework 的性能将根据硬件和软件中的内存实现发生变化。对于一些设备,将全局程序集缓存安装到存储卡能够实现更好的性能。

内存使用

.NET Compact Framework 最适合在具有以下特性的系统上运行:

  • 由电池供电

  • 在动态 RAM (DRAM) 中存储 .NET Compact Framework 及其应用程序的空间是闪存或 RAM 文件系统容量的大约 5 到 10 倍

  • DRAM 中的工作空间很小,只有 128 KB 到 1 MB

  • 有可选硬盘

.NET Compact Framework 在使用可用系统内存时非常小心。直到运行应用程序后才访问 RAM。此外,当退出程序时,.NET Compact Framework 释放 RAM。本机操作系统不必有自己的内存保护功能。当访问不是自己所拥有的内存时,总是会发生异常。

内存不足时,.NET Compact Framework 主动释放当前执行代码不需要的内部数据结构。因此,即使在内存不足时,程序仍能继续运行。如果应用程序需要的内存比可用内存多,则 .NET Compact Framework 将关闭应用程序并释放所有基础资源。.NET Compact Framework 本身不会因为内存不足而失败。

应用程序域宿主启动 .NET Compact Framework 应用程序和公共语言运行库。.NET Compact Framework 应用程序使用代码空间和静态及动态数据空间的方式与本机应用程序相同。当没有任何 .NET Compact Framework 应用程序正在运行时,除了应用程序域宿主外,没有任何其他 RAM 开销,公共语言数据库只使用少量的静态数据。当 .NET Compact Framework 应用程序启动时,Windows CE .NET 会创建一个应用程序域宿主。

.NET Compact Framework 应用程序打包成 .exe 文件和 .dll 文件,这些文件可以存储在闪存中的只读或读/写文件系统中(或存储在 ROM 中以便只读)。公共语言运行库类加载程序可以在可直接寻址的块中读取这些文件,不生成内存副本,也不要求内存管理单元创建文件的内存映射视图。

开发人员最好在多个设备上测试应用程序,以了解设备特定的性能变化。

RAM 存储

随机访问存储器 (RAM) 用于存储动态数据结构和 JIT 编译的代码。.NET Compact Framework 使用可用的 RAM(最多可达设备指定的限制)缓存生成的代码和数据结构,然后在适当的时候释放内存。

当运行时内存不足时,公共语言运行库使用代码间距调整技术释放 JIT 编译的代码块。这使较大的程序能够以最小的性能损失在 RAM 受限制的系统上运行。

ROM 存储

构成公共语言运行库的本机代码可以驻留在只读存储器 (ROM) 或 RAM 文件系统中。.NET Compact Framework 使用可用的 ROM、闪存或磁盘存储,使应用程序能够在内存不足时以较低的性能运行。

包含 Microsoft 中间语言 (MSIL) 说明和类库元数据的文件存储在 ROM 文件系统或 RAM 文件系统中。类库可以作为可下载应用程序安装过程的一部分下载到读/写文件系统中。