Il sistema che sto usando è un normale P4 2.8Ghz con 512Mb ram ... quindi se ho ben capito trovando una buona disponibilità di RAM e di CPU il CLR alloca molta memoria ... mentre magari "per assurdo" trovandosi in un P3 1Ghz con 256Mb di ram magari anzichè 25Mb ne userebbe ad esempio 15 ... è così ?!
Altra cosa ... quindi io devo comunque usare il dispose per i form, i dataset etc. ma poi magari quella memoria sarà liberata (ad esempio) dopo 1minuto, 2 minuti, secondo il volere della Garbage Collection ?!
Per quanto riguarda il codice scritto per gestire direttamente i dati, questo è un esempio banale:
codice:
'Prima di tutto richiamo la classe per la gestione dell'Sql
Imports System.Data.SqlClient
'Setto i parametri di connessione al Database
Dim myConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=""C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Test.mdf"";Integrated Security=True;Connect Timeout=30;User Instance=True"
'Creo la connessione al Server SQL
Dim myConnection As SqlConnection = New SqlConnection(myConnectionString)
'Creo la query SQL da eseguire
Dim myQuery As String
'Assegno alla query il testo di una InputBox
myQuery = Query.Text
'Creo il comando SQL e lo faccio eseguire
Dim myCommand As SqlCommand = New SqlCommand(myQuery, myConnection)
myConnection.Open()
Dim myReader As SqlDataReader = myCommand.ExecuteReader()
'Creo un DataTable in cui carico i risultati della query
Dim myTable As DataTable = New DataTable()
myTable.Load(myReader)
'Mostro i Risultati della Query nel DataGrid
DataGridView1.DataSource = myTable
E' più scomodo programmare così rispetto al lasciar fare a VB Studio, ma a parte questo quando eseguivo il comando ci metteva parecchio, mentre usando gli strumenti visuali ripeto una volta che ha caricato in memoria va spedito.
Ovviamente non mi aspetto di vedere scendere a 100Kb l'occupazione della memoria, ma mi chiedo solo ... se anzichè 3 record ce ne inserisco 10.000 ... che fa, mi chiede 4Gb di Ram su un biprocessore ?!! Poi per curiosità ho preso un programma scaricato da internet, fatto in VB6 che si collega a un database MSDE 2000 ... con dentro decine di migliaia di record occupa 10Mb di memoria ... possibile che io sia così negato che faccio 1000 volte peggio?!! 
Altra cosa che non capisco ... apro il form, senza far alcunchè lo richiudo, la dinamica della memoria è la seguente:
12Mb Apro il programma
25Mb Apro il form della rubrica
25Mb Chiudo il form della rubrica
26Mb Riapro lo stesso form
26Mb Lo richiudo
27Mb Lo riapro
... e così via. Sottolineo che per la sola apertura non setto nè variabili nè costanti nè nulla. Il form è semplicemente il classico schedario che permette di scorrere tra i record e inserisli/aggiornarli/eliminarli ... senza neanche usare codice "mio" ma appoggiandomi agli strumenti di sviluppo visuale di VB Studio.
Quindi, per esser precisi, Creo il programma, ci aggiungo un form, creo un dataset con i datatable di tutte le tabelle del database, e dal box datasource trascino nel designer la tabella ... !
Inoltre, per curiosità ho provato a creare altri 2 form che si collegano ad altre 2 tabelle ... anche queste con pochissimi record ... il risultato è che aprendoli tutte e tre assieme arrivo a 50Mb di occupazione di memoria, e ripeto i dati son irrisori!! Che 10record occupino 50Mb ha dell'incredibile!