Mi son appena avvicinato alla programmazione con VB .NET 2005, e per studiare un po’ il linguaggio sto creando un classico programmino stile rubrica (anche se ben accessoriata) che si interfaccia con un database SQL Server 2005.

Ho il problema che il software fa un uso smisurato della memoria; basta avviare il programma (che all'avvio è solo 1 form con un banale menù per avviare gli altri form) e già son 12Mb utilizzati, se apro il form per gestire la rubrica (una tabella con circa 30 campi), gestita mediante table adapter creato col wizard, l’occupazione di memoria schizza a 25Mb, e la cosa assurda è che in tabella ci ho messo giusto un paio di record tanto per testare il funzionamento! Va da sé che se poi apro anche altri form l’uso della memoria continua ad aumentare in maniera esponenziale; immagino che il problema stia nel fatto che i dati son caricati tutti in memoria, anche se non riesco a capire come 3 record possan occupare 25Mb !!!

Inoltre, chiudendo il form la memoria non viene comunque scaricata; ho provato a usare il sia il comando clear che dispose per il dataset, senza risultato. Avevo anche provato a gestire inserimenti e visualizzazioni da codice con comandi sql anziché usare i tool visuali, ma aldilà del maggior tempo di programmazione ottenevo che si occupava meno memoria ma quando c’era da far un insert o una select i tempi eran biblici (almeno usando i dataset ci mette di più a caricare ma una volta che son in memoria si procede ragionevolmente spediti)

Come faccio a ridurre drasticamente il consumo di memoria e ottenere contemporaneamente una buona velocità di esecuzione del programma? Può aiutare creare più dataset anziché uno unico che contiene i table adapter per tutte le tabelle?

Grazie in anticipo a chiunque mi darà una mano