Share via


Gestion de la mémoire des appareils dans le .NET Compact Framework

Mise à jour : novembre 2007

L'une de points forts du .NET Compact Framework réside dans son utilisation efficace des ressources, notamment la mémoire vive volatile. Il n'est pas nécessaire que les périphériques possèdent des unités de gestion de mémoire (MMU, memory management unit) matérielles ou une mémoire virtuelle de système d'exploitation.

Taille de stockage du .NET Compact Framework

Pour le .NET Compact Framework version 3.5, consultez la section qui décrit l'installation de fichier CAB. Le .NET Compact Framework version 3.5 n'est pas encore disponible dans la mémoire ROM.

Pour le .NET Compact Framework version 2.0, la taille de stockage est la suivante : 

  • 5,5 Mo (ROM), non compressé, sous Windows Mobile 5.0.
Remarque :

Le stockage persistant n'est plus compressé à partir de Windows Mobile 5.0.

Pour le .NET Compact Framework version 1.0, la taille de stockage est la suivante :

  • 1,55 Mo (ROM), compressé, sur Pocket PC 2000 et 2002.

  • 1,35 Mo (ROM), compressé, sous Windows Mobile 2003 pour Pocket PC et Windows Mobile 2003 pour Smartphone.

RAM requise pour l'exécution :

  • 0,5 Mo+ (dépend de l'application).

Tailles d'application classiques :

  • 5 à 100 Ko.

Installation par fichier CAB

Pendant l'installation du .NET Compact Framework version 2.0 Service Pack 1 et versions ultérieures, vous êtes invité à réaliser l'installation sur le périphérique ou sur une carte de stockage, le cas échéant. Si vous choisissez l'installation sur une carte de stockage, le Global Assembly Cache est placé sur la carte de stockage et les fichiers du Common Language Runtime (CLR) sont placés dans le répertoire \Windows. Dans le .NET Compact Framework version 3.5, le Global Assembly Cache requiert un espace d'environ 5,2 Mo et le CLR 1,3 Mo.

Les performances de l'installation par fichier CAB du .NET Compact Framework varient en fonction de l'implémentation de la mémoire matérielle et logicielle. Pour certains périphériques, de meilleures performances peuvent être obtenues en installant le Global Assembly Cache sur une carte de stockage.

Utilisation de la mémoire

Le .NET Compact Frameworkk est conçu pour fonctionner de manière optimale sur les systèmes qui ont les caractéristiques suivantes :

  • alimentation par batterie ;

  • environ 5 à 10 fois la capacité de mémoire flash ou de mémoire vive du système de fichiers pour stocker le .NET Compact Framework et ses applications en RAM dynamique (DRAM) ; 

  • un espace de travail compris entre 128 Ko et 1 Mo en RAM dynamique ;

  • un disque dur facultatif.

Le .NET Compact Framework utilise avec parcimonie la mémoire système disponible. Il n'accède pas à la mémoire vive avant que vous n'exécutiez une application. De plus, le .NET Compact Framework libère la mémoire vive dès que vous quittez les programmes. Il n'est pas nécessaire que le système d'exploitation natif possède ses propres fonctionnalités de protection de la mémoire. Des exceptions sont levées systématiquement en cas d'accès à une mémoire non affectée.

Lorsque la mémoire se raréfie, le .NET Compact Framework libère agressivement les structures de données internes dont le code en cours d'exécution n'a pas besoin. Par conséquent, le programme peut continuer à s'exécuter, même dans les situations de mémoire insuffisante. Si l'application requiert plus de mémoire que le périphérique n'en peut fournir, le .NET Compact Framework ferme l'application proprement et libère toutes les ressources sous-jacentes. L'insuffisance de mémoire ne doit pas provoquer l'échec du .NET Compact Framework lui-même.

L'hôte du domaine d'application démarre les applications .NET Compact Framework et le Common Language Runtime. Les applications.NET Compact Framework utilisent l'espace du code et l'espace des données statiques et dynamiques de la même manière que les applications natives. Pendant les périodes où aucune application .NET Compact Framework ne s'exécute, seul l'hôte de domaine d'application consomme de la mémoire vive, et une petite quantité de données statiques est utilisée par le Common Language Runtime. Windows CE .NET crée un hôte de domaine d'application lors du démarrage d'une application .NET Compact Framework.

Les applications .NET Compact Framework sont empaquetées dans des fichiers .exe et des fichiers .dll qui peuvent être stockés dans un système de fichiers (en lecture seule ou en lecture/écriture) en mémoire flash (ou en ROM pour les fichiers en lecture seule). Le chargeur de classe du Common Language Runtime peut lire ces fichiers et les placer dans des blocs adressables directement sans en faire de copie en mémoire ni exiger la création par une unité de gestion de mémoire d'une vue du fichier mappée en mémoire.

Pour comprendre les écarts de performances spécifiques au périphérique, les développeurs ont intérêt à tester leurs applications sur plusieurs périphériques.

Stockage en mémoire vive

La mémoire vive est utilisée pour stocker les structures de données dynamiques et le code compilé juste-à-temps. Le .NET Compact Framework utilise la mémoire vive disponible jusqu'à une limite spécifiée par le périphérique pour stocker dans un cache le code généré et les structures de données, puis il libère la mémoire en temps opportun.

Lorsque la mémoire se raréfie, le Common Language Runtime emploie une technique de suspension du code (code-pitching) pour libérer, au moment de l'exécution, des blocs de code compilé juste-à-temps. Ceci permet à des programmes relativement volumineux de s'exécuter sur des systèmes possédant peu de mémoire vive sans pénalisation notable au niveau des performances.

Stockage en ROM

Le code natif qui forme le Common Language Runtime peut résider en ROM ou dans un système de fichiers en mémoire vive. Le .NET Compact Framework utilise la mémoire disponible (ROM, flash ou disque) pour permettre aux applications de poursuivre leur exécution avec des performances réduites dans les situations de mémoire insuffisante.

Les fichiers qui contiennent des instructions MSIL (Microsoft Intermediate Language) et des métadonnées pour des bibliothèques de classes sont stockés soit dans un système de fichiers ROM, soit dans un système de fichiers en mémoire vive. Les bibliothèques de classes peuvent être téléchargées dans un système de fichiers en lecture/écriture dans le cadre du processus d'installation d'application téléchargeable.

Voir aussi

Tâches

Comment : améliorer les performances

Concepts

Gestion automatique de la mémoire

Autres ressources

Vue d'ensemble de l'architecture du .NET Compact Framework