March 2010 Blog Posts

Windows.Forms, ToolStrip and Memory Leak

In questi giorni ho dovuto fare memory profiling di una grossa applicazione gestionale. Per farlo ho utilizzato un tool commerciale che ritengo molto buono. (Red Gate ANTS Memory Profiler). Dopo un po' di tempo passato ad analizzare i dati quali Live Instance, Instance difference, Live size, Istance retention graph eccettera, ho scoperto nell'applicazione un memory leak causato da quelle form che utilizzavano il controllo Windows Form ToolStrip (vedi Classe ToolStrip su MSDN) conseguenza di un evento globale, in cui il controllo si "installa" per gestire il suo layout, come si può vedere da questo retention graph visualizzato da ANTS Memory Profiler....

posted @ Thursday, March 25, 2010 12:23 AM | Feedback (0)

Garbage Collector - Collect completa e deterministica ...

Ho avuto la necessità di scrivere un oggetto che gestisca in modo deterministico il ciclo di vita un oggetto aggregato, che deve essere finalizzato in modo opportuno. Per raggiungere questo obiettivo ho utilizzato il pattern IDisposable (vedi Implement IDisposable Correctly), poi ho scritto un test per verificare che l'oggetto quando finalizzato attraverso IDisposable (cioè quando usato in un blocco using(...) { }), finalizzasse a sua volta correttamente l'oggetto aggregato. Volevo però verificare anche che la stessa operazione di finilazzazione avvenisse quando l'oggetto è rilasciato dal Garbage Collector, così ho dovuto trovare un metodo per forzare in modo deterministico e sincrono la finalizzazione degli...

posted @ Wednesday, March 24, 2010 1:51 PM | Feedback (0)