Verwaltung des Gerätespeichers in .NET Compact Framework

Aktualisiert: November 2007

Eine der Stärken von .NET Compact Framework ist seine effiziente Ressourcennutzung, besonders beim flüchtigen Arbeitsspeicher. Geräte müssen keine Hardware-Speicherverwaltungseinheiten (Memory Management Units, MMU) oder virtuellen Speicher im Betriebssystem aufweisen.

.NET Compact Framework-Speichergröße

Informationen zu .NET Compact Framework Version 3.5 finden Sie im Abschnitt über die Installation von CAB-Dateien. .NET Compact Framework Version 3.5 ist noch nicht im ROM verfügbar.

Für .NET Compact Framework Version 2.0 gilt folgende Speichergröße: 

  • 5,5 MB (ROM), unkomprimiert, auf Windows Mobile 5.0.
Hinweis:

Permanenter Speicher wird ab Windows Mobile 5.0 nicht mehr komprimiert.

Für .NET Compact Framework Version 1.0 gilt folgende Speichergröße:

  • 1,55 MB (ROM), komprimiert, auf Pocket PC 2000 und 2002.

  • 1,35 MB (ROM), komprimiert, auf Windows Mobile 2003 für Pocket PC und Windows Mobile 2003 für Smartphone.

RAM-Anforderungen zur Laufzeit:

  • 0,5 MB+ (hängt von der Anwendung ab).

Typische Anwendungsgrößen:

  • 5-100 KB.

Installation der CAB-Datei

Während der Installation von .NET Compact Framework, Version 2.0 mit Service Pack 1 und höheren Versionen, werden Sie aufgefordert, die Installation entweder auf dem Gerät oder, wenn vorhanden, auf einer Speicherkarte durchzuführen. Wenn Sie die Installation auf dem Speichermedium durchführen, werden der globalen Assemblycache auf einer Speicherkarte und die Dateien für die Common Language Runtime (CLR) im Windows-Verzeichnis gespeichert. Der globale Assemblycache erfordert in .NET Compact Framework Version 3.5 ungefähr 5,2 MB und die CLR 1,3 MB Speicherplatz.

Die Leistung von .NET Compact Framework für die Installation der CAB-Datei ist je nach Speicherimplementierung in Hardware und Software unterschiedlich. Bei manchen Geräten kann eine bessere Leistung erzielt werden, wenn der globale Assemblycache auf einer Speicherkarte installiert wird.

Speichernutzung

.NET Compact Framework ist für eine optimale Ausführung auf Systemen mit den folgenden Merkmalen konzipiert:

  • Akkubetrieb

  • Ca. fünf- bis zehnmal so viel Dateisystemkapazität wie Flash-Speicher oder -RAM für die Speicherung von .NET Compact Framework und seinen Anwendungen in dynamischem RAM (DRAM) 

  • 128 KB bis 1 MB Arbeitsbereich im DRAM

  • Optionales Festplattenlaufwerk

.NET Compact Framework nutzt verfügbaren Systemspeicher konservativ. Auf RAM wird erst zugegriffen, wenn Sie eine Anwendung starten. Außerdem gibt .NET Compact Framework RAM frei, wenn Sie Programme beenden. Das systemeigene Betriebssystem benötigt keine eigenen Speicherschutzfunktionen. Ausnahmen werden grundsätzlich ausgelöst, wenn auf nicht eigenen Speicher zugegriffen wird.

Bei einer knappen Speichersituation gibt .NET Compact Framework interne Datenstrukturen, die vom derzeit ausgeführten Code nicht benötigt werden, aggressiv frei. Daher kann das Programm weiterhin ausgeführt werden, auch wenn der Speicher knapp ist. Beansprucht die Anwendung mehr Speicher, als verfügbar ist, schließt .NET Compact Framework die Anwendung sauber und gibt alle zugrunde liegenden Ressourcen frei. Es ist unwahrscheinlich, dass .NET Compact Framework wegen Speicherknappheit abstürzt.

Der Anwendungsdomänenhost startet .NET Compact Framework-Anwendungen und die Common Language Runtime. Codebereiche sowie statische und dynamische Datenbereiche werden von .NET Compact Framework-Anwendungen in der gleichen Weise verwendet wie von systemeigenen Anwendungen. Wenn keine .NET Compact Framework-Anwendungen aktiv sind, wird über den Anwendungsdomänenhost hinaus kein RAM beansprucht, und die Common Language Runtime verwendet nur eine kleine Menge an statischen Daten. Windows CE .NET erstellt einen Anwendungsdomänenhost, wenn eine .NET Compact Framework-Anwendung gestartet wird.

.NET Compact Framework-Anwendungen werden in EXE- und DLL-Dateien gepackt, die in einem Dateisystem für Nur-Lesen- oder Lese-/Schreibzugriff im Flash-Speicher (bzw. für Nur-Lesen-Zugriff im ROM) gespeichert werden können. Das Klassenladeprogramm der Common Language Runtime kann diese Dateien in direkt ansprechbaren Blöcken lesen, ohne eine Speicherkopie zu erstellen und ohne, dass eine Speicherverwaltungseinheit ein Speicherabbild der Datei erstellen muss.

Entwicklern wird empfohlen, Anwendungen auf mehreren Geräten zu testen, um die gerätespezifischen Leistungsunterschiede zu verstehen.

RAM-Speicherung

RAM (Random Access Memory, Speicher mit wahlfreiem Zugriff) wird zum Speichern von dynamischen Datenstrukturen und JIT-(Just-In-Time-)kompiliertem Code verwendet. .NET Compact Framework verwendet verfügbares RAM bis zu der vom Gerät vorgegebenen Obergrenze, um generierten Code und Datenstrukturen zwischenzuspeichern, und gibt den Speicher zum geeigneten Zeitpunkt wieder frei.

Die Common Language Runtime verwendet eine Codepitchingtechnik, um zur Laufzeit Blöcke von JIT‑kompiliertem Code freizugeben, wenn wenig Speicher verfügbar ist. Dadurch können umfangreichere Programme bei minimalen Leistungseinbußen auf Systemen mit begrenztem RAM ausgeführt werden.

ROM-Speicherung

Systemeigener Code, der die Common Language Runtime bildet, kann im ROM (Read-Only Memory, Nur-Lese-Speicher) oder in einem RAM‑Dateisystem vorliegen. .NET Compact Framework nutzt verfügbares ROM, Flash-Speicher oder Festplattenspeicher, damit Anwendungen bei Speicherknappheit mit eingeschränkter Leistung weiter ausgeführt werden können.

Dateien, die MSIL (Microsoft Intermediate Language)-Anweisungen enthalten, und Metadaten für Klassenbibliotheken werden entweder in einem ROM- oder in einem RAM-Dateisystem gespeichert. Klassenbibliotheken können im Rahmen der Installation der downloadbaren Anwendung in ein Dateisystem mit Lese-/Schreibzugriff heruntergeladen werden.

Siehe auch

Aufgaben

Gewusst wie: Verbessern der Leistung

Konzepte

Automatische Speicherverwaltung

Weitere Ressourcen

Übersicht über die Architektur von .NET Compact Framework