Gestione della memoria del dispositivo in .NET Compact Framework
Aggiornamento: novembre 2007
Un importante vantaggio offerto da .NET Compact Framework è costituito dall'efficiente utilizzo delle risorse, in particolare della memoria RAM volatile. I dispositivi non devono necessariamente disporre di unità di gestione della memoria hardware o della memoria virtuale del sistema operativo.
Capacità di memorizzazione di .NET Compact Framework
Per .NET Compact Framework versione 3.5, vedere la sezione che descrive l'installazione con file CAB. .NET Compact Framework versione 3.5 non è ancora disponibile nella ROM.
Per .NET Compact Framework versione 2.0, la capacità di memorizzazione è indicata di seguito:
- 5.5 MB (ROM), non compressi, in Windows Mobile 5.0.
Nota: |
---|
A partire da Windows Mobile 5.0 l'archivio permanente non è più compresso. |
Per .NET Compact Framework versione 1.0, la capacità di memorizzazione è indicata di seguito:
1,55 MB (ROM), compressi, in Pocket PC 2000 e 2002.
1,35 MB (ROM), compressi, in Windows Mobile 2003 per Pocket PC e Windows Mobile 2003 per Smartphone.
Requisiti RAM in esecuzione:
- Almeno 0,5 MB (in base all'applicazione).
Dimensioni tipiche delle applicazioni:
- 5-100 KB.
Installazione con file CAB
Durante l'installazione di .NET Compact Framework 2.0 Service Pack 1 e versioni successive, viene chiesto se si desidera installare nel dispositivo o in una scheda di memoria, se presente. Se si sceglie di installare in una scheda di memoria, la Global Assembly Cache viene copiata nella scheda di memoria e i file per Common Language Runtime (CLR) vengono copiati nella directory \Windows. In .NET Compact Framework versione 3.5, la Global Assembly Cache richiede circa 5,2 MB di spazio e CLR richiede 1,3 MB.
Le prestazioni di .NET Compact Framework variano per l'installazione con file CAB, a seconda che l'implementazione venga effettuata nell'hardware o nel software. Per alcuni dispositivi, è possibile ottenere prestazioni ottimali installando la Global Assembly Cache in una scheda di memoria.
Utilizzo della memoria
.NET Compact Framework è progettato per garantire un funzionamento ottimale su sistemi con le seguenti caratteristiche:
Alimentazione a batteria.
Capacità da 5 a 10 volte superiore rispetto a quella del file system della memoria flash o della RAM per la memorizzazione di .NET Compact Framework e delle relative applicazioni nella RAM dinamica (DRAM).
Spazio di lavoro da un minimo di 128 KB a 1 MB nella DRAM.
Disco rigido facoltativo.
In .NET Compact Framework la memoria di sistema disponibile viene utilizzata con attenzione. Durante l'esecuzione di un'applicazione non viene effettuato alcun accesso alla RAM. La RAM, inoltre, viene liberata alla chiusura dei programmi. Non è necessario che il sistema operativo nativo disponga di specifiche funzionalità di protezione della memoria. In caso di accesso alla memoria senza proprietario vengono sempre generate eccezioni.
Quando non è disponibile memoria sufficiente, in .NET Compact Framework vengono automaticamente rilasciate le strutture di dati interne non richieste dal codice attualmente in esecuzione. Di conseguenza, il programma può essere eseguito anche in presenza di memoria limitata. Se l'applicazione richiede una quantità di memoria superiore a quella disponibile, l'applicazione viene chiusa in modo corretto e tutte le risorse sottostanti vengono rilasciate da .NET Compact Framework. Anche in .NET Compact Framework non dovrebbero verificarsi errori dovuti a un'insufficienza di memoria.
Mediante l'host del dominio applicazione vengono avviati le applicazioni .NET Compact Framework e Common Language Runtime. Le applicazioni.NET Compact Framework utilizzano lo spazio del codice e lo spazio dei dati statici e dinamici come le applicazioni native. Quando non sono in esecuzione applicazioni .NET Compact Framework, la RAM viene utilizzata solo per l'host del dominio applicazione, mentre una quantità ridotta di dati statici viene utilizzata da Common Language Runtime. In Windows CE .NET viene creato un host del dominio applicazione all'avvio di un'applicazione .NET Compact Framework.
Le applicazioni .NET Compact Framework vengono assemblate in file EXE e DLL, che possono essere memorizzati in un file system in sola lettura o in lettura/scrittura nella memoria flash oppure in sola lettura nella ROM. Questi file possono essere letti dal caricatore di classe di Common Language Runtime in blocchi indirizzabili direttamente, senza la creazione di una copia in memoria e senza che sia richiesta un'unità di gestione della memoria per creare una visualizzazione mappata in memoria del file.
Si consiglia agli sviluppatori di eseguire i test delle applicazioni su più dispositivi, in modo da individuare le variazioni nelle prestazioni specifiche dei diversi dispositivi.
Memorizzazione nella RAM
La memoria RAM (Random Access Memory) viene utilizzata per memorizzare strutture di dati dinamiche e codice compilato tramite JIT. .NET Compact Framework utilizza la RAM disponibile fino a un limite specificato dal dispositivo per memorizzare nella cache il codice e le strutture di dati generati, quindi libera la memoria nel momento appropriato.
In Common Language Runtime, in caso di memoria insufficiente vengono utilizzate tecniche di "code pitching" per liberare i blocchi di codice compilato tramite JIT in fase di esecuzione. È così possibile eseguire programmi di grandi dimensioni su sistemi con memoria RAM limitata con una riduzione minima delle prestazioni.
Memorizzazione nella ROM
Il codice nativo da cui è costituito Common Language Runtime può risiedere nella memoria di sola lettura (ROM, Read-Only Memory) o in un file system nella RAM. In caso di memoria insufficiente, per consentire il proseguimento dell'esecuzione delle applicazioni con prestazioni ridotte, in .NET Compact Framework viene utilizzata la memorizzazione nella ROM, nella memoria flash o su disco.
I file contenenti metadati e istruzioni MSIL (Microsoft Intermediate Language) per librerie di classi vengono memorizzati in un file system nella ROM o nella RAM. Le librerie di classi possono essere scaricate in un file system in lettura e scrittura nell'ambito del processo di installazione delle applicazioni scaricabili.
Vedere anche
Attività
Procedura: migliorare le prestazioni
Concetti
Gestione automatica della memoria
Altre risorse
.Cenni preliminari sull'architettura di .NET Compact Framework