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

Comments

  • Anonymous
    September 18, 2009
    In aggiunta ai post futuri su questo argomento, hai qualche libro da suggerire sullo sviluppo con .NET Compact Framework o Mobile in generale?

  • Anonymous
    September 18, 2009
    Ciao Luigi, grazie per la domanda! Uno dei libri che mi sento di consigliarti è sicuramente "Mobile Development Handbook" (http://www.microsoft.com/learning/en/us/book.aspx?ID=10294). Una volta letto questo potrai approfondire con altri, ma è un ottimo punto di partenza. HTH, ciao! ~raffaele

  • Anonymous
    March 04, 2010
    Ciao Raffaele, sto sviluppando una applicazione per palmari LXE con win CE 50, per basse temperature. Posso avere una tua opinione su come l'ho impostata, per quanto riguarda la gestione della memoria e la connessione al database ? p.s. uso l'alias Artigiano perchè mi sento veramente un artigiano del software, visto che non sono laureato e programmo dal lontano 1983 (iniziato con PCOS-m20 Olivetti).

  • Anonymous
    March 04, 2010
    Ciao Artigiano! Contattami direttamente attraverso la pagina del mio blog http://blogs.msdn.com/raffael/contact.aspx, spero di poterti dare delle dritte. E probabilmente potrò anche parlarti del servizio di "Advisory" che il Supporto Tecnico offre esattamente per richieste come la tua. :-) A presto, ciao! ~raffaele P.S. Hai già letto gli altri post della serie? http://blogs.msdn.com/itasupport/archive/tags/Raffaele+Limosani/default.aspx