Gestione della Memoria nella .NET Compact Framework e in Windows Mobile (Introduzione)

Un argomento molto caldo dello sviluppo (e del Supporto!) per Windows Mobile, specialmente per applicazioni basate sulla .NET Compact Framework (“NETCF”), è sempre stato la differente gestione della memoria sia a livello del sistema operativo sia da parte della .NET Runtime, rispetto ad altri sistemi operativi Win32 e alla .NET Framework per desktop. Mi piace pensare che il numero di richieste di Supporto Tecnico al riguardo sia drasticamente diminuito *anche* grazie ai miei post (il primo e più completo fu questo)… certo, sicuramente anche le migliorie di Windows Mobile 6 e 6.1 avranno aiutato gli sviluppatori, così come la NETCF arrivata ormai alla versione 3.5 (e SQLCE alla v3.5 SP1), ad ogni modo i tempi sono sospetti… Open-mouthed

Il primo impatto che uno sviluppatore desktop ha quando comincia a programmare per Windows CE o Mobile è che le risorse a disposizione sono incredibilmente più limitate (CPU, RAM, Virtual Memory, …) e quindi un “leak” si manifesta molto più facilmente (un “leak” è una perdita inaspettata di una risorsa, in genere riferito alla memoria virtuale - “memory leak”). Inoltre, esistono alcune particolarità della NETCF che se non tenute in considerazione portano facilmente ad una OutOfMemoryException, tanto per citare un possibile sintomo.

Conoscere in anticipo come Windows Mobile\CE e la NETCF gestiscano la memoria permette di sviluppare applicazioni che non richiedano una completa code-review al termine dello sviluppo, spesso difficile nonostante negli anni gli strumenti a disposizione si siano di gran lunga migliorati. Mi piacerebbe quindi iniziare una serie di post, sui seguenti argomenti (qualsiasi commento sarà ben accetto!):

  1. Memoria Virtuale sui sistemi operativi basati sulla piattaforma Windows CE
  2. Particolarità della gestione della memoria nella NETCF
  3. Strumenti per l’individuazione dei memory leak
  4. Suggerimenti relativi a SQL Compact (ex SQLCE)
  5. Suggerimenti relativi a architetture di applicazioni NETCF
  6. Varie ed eventuali…

A presto!
~raffaele

Raffaele Limosani
Senior Support Engineer
Windows Mobile & Embedded Developer Support
My Blog around Mobile Development