Instant Developer

Tips&Tricks Instant Developer Foundation: problemi di memoria

| 26 Novembre 2014 | Giuseppe Lanzi
memoria Instant Developer

Capita alle volte che i programmatori non abbiano a che fare con la soluzione di problemi algoritmici, ma che debbano risolvere problemi legati all’uso della memoria dell’applicazione.

Certo è sempre un problema di come viene scritto il codice, ma rispetto ad un errore algoritmico che si mostra immediatamente (alle volte anche all’utente finale) un errore di gestione della memoria si fa vedere solo ad un certo punto, quando le cose sono degradate troppo e il server ha finito la memoria disponibile. Un effetto che può risultare anche molto lontano dalla causa.

In questi casi dobbiamo dare risposta alla domanda “ma dov’è che ho messo tutta questa memoria?”. Oggi scrivo questo post per dare un paio di consigli apparentemente semplici ma che ho notato essere utili.

Come prima cosa è bene utilizzare uno strumento efficace per l’analisi, non affidatevi semplicemente a quello che vi dice Task Manager perché non è uno strumento pensato per questo scopo. Task Manager vi informa semplicemente del fatto che una certa applicazione sta usando un certo quantitativo di memoria del sistema operativo, ma non vi dice in quali classi è usata e soprattutto non fa distinzione tra memoria effettivamente usata dell’applicazione e quella che il server web tiene per sé perché sa di poterne avere bisogno.

Per fare una prova con questo piccolo progetto di esempio su IIS e capire di che tipo di strumento sto parlando, vi consiglio di provare la demo di ANTS Memory Profiler, che ho trovato davvero efficace e di aiuto in un compito complesso come la soluzione di un memory leak.

Provate ad aprire la videatea New Form IMDB e a controllare in quali classi viene usata la memoria, troverete live instance di IMDBFldValue che corrispondono alle 30.000 righe che ho inserito in una tabella IMDB (le In Memory Database di Instant Developer).

Provate a chiudere la videata e a ricontrollare la memoria, avrete sempre lo stesso numero di istanze di IMDBFldValue ancora “vive” in memoria. Succede perché le tabelle IMDB sono fatte apposta per essere accessibili da tutta l’applicazione, da questo punto di vista sono da considerare al pari di una variabile globale. Alla chiusura della videata New Form IMDB la tabella IMDB contenuta all’interno non viene quindi svuotata ma tenuta in memoria per l’eventuale riutilizzo da parte di altre procedure dell’applicazione.

Ed è qui che entra in ballo il secondo consiglio, rivolto a chi utilizza Instant Developer. E’ prassi comune svuotare le tabelle IMDB subito prima di riempirle, tipicamente questo accade quando si apre la videata, ma se usate IMDB di grandi dimensioni potreste incorrere in problemi di memoria se non svuotate le tabelle anche alla chiusura della form usando l’evento di Unload.

Provate a scommentare il contenuto dell’evento nel progetto e vedrete subito la differenza.

Giuseppe Lanzi
Technical Support Manager
Mi occupo di assistenza e consulenza tecnica, dei corsi di formazione e dei sistemi rivolti ai clienti. Amo la tecnologia e ogni tipo di nuovo gadget, mi interesso di fotografia e prendo al volo ogni occasione di scoprire un nuovo gioco.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.


Potrebbe Interessarti

Instant Developer Foundation 22.5 e Fluid: il futuro comincia da qui

La versione 22.5 di Instant Developer Foundation rappresenta un passo tangibile verso il futuro di Instant Developer. Il nuovo motore grafico Fluid è infatti il...

Leggi Tutto

Webinar: Le novità di Instant Developer Cloud 22.5

Nel webinar sulle novità della release 22.5 di Instant Developer Cloud , Giuseppe Lanzi, responsabile dei reparti Customer Care e Systems e Paolo Giannelli, responsabile...

Leggi Tutto

Instant Developer Cloud 22.5: esperienze migliori per te e il tuo software

Instant Developer Cloud 22.5 è una versione progettata per una migliore esperienza di utilizzo da parte degli sviluppatori e di fruizione delle applicazioni per gli...

Leggi Tutto

Rimani Aggiornato

Iscriviti alla nostra newsletter per ricevere aggiornamenti su novità, eventi, release, webinar e tante altre notizie sui prodotti Instant Developer.