Newsgroup: it.comp.lang.visual-basic
Titolo: Chiarimenti e consigli su dispendio di risorse.

Per velocizzare e snellire un pň la mia applicazione ho eliminato
praticamente tutti i vari data... e fatto ritocchini al codice, riducendo di
vari MB la memoria occupata durante l'esecuzione del software (da circa 21
mb a quasi 9). Ho notato che qualsiasi cosa io faccia, giustamente, la
memoria occpata aumenta. Per esempio se clicco su un cmdbtn che non fa
assolutamente nulla vengono utilizzati circa 4k (dai 200 ai 300 per msgbox)
di memoria che poi non vengono piů liberati; anche queso lo posso capire
immaginando che il sistema non allochi memoria per quell'oggetto finchč non
lo si deve realmente utilizzare (se non il minimo indispensabile per far si
che quell'oggetto esista), un pň come l'installare alcune funzioni di office
al primo utilizzo, penso.
Se non ho capito male quando poi utilizzo un secondo cmdbtn non viene
utilizzata altra memoria, tranne quella necessaria all'esecuzione del codice
associato a quell'evento.
Ma la questione non quadra quando apro, con ADO, 5-6 recordset che in
seguito chiudo e setto = a nothing e chiudo la connessione. Perchč č
necessario che i 3-4 MB utilizzati per i recordset che non utilizzo piů
rimangano dedicati? Perchč ad ogni apertura di un rs la memoria occupata
aumenta? Forse perch ogni rs č considerato come un "oggetto" completamente
diverso dagli altri rs?
Mi chiarireste un poco di idee, per favore, e direste se posso fare qualcosa
per ovviare?
Ciao e grazie, SK

 qualcosa per ovviare?
Questa è provocazione e ... sollecitazione a delinquere.
Semmai dovessi rispondere, sarò proprio io l'unico imputabile?

 Ciao e grazie, SK
good coding!!!
-- 
Alletun
Sorry, ask me if you want to get my e-mail!

 Semmai dovessi rispondere, sarò proprio io l'unico imputabile?
Così ti starei istigando? Quando sarò al banco degli imputati dirò che
credevo mi avessi plonkato, non credevo mi avresti letto :-P
Al massimo avrò porto un'arma che è stata raccolta ed usata.
Ciao, SK

 diversi puoi aprire la stessa sorgente dati.....
A questo punto credo di aver capito che l'unica domanda che mi è lecito fare
è: è normale un'incremento tale di memoria occupata?
Ciao, SK

 ok, ma è mai possibile che caricare 500 record mi "pesi" 1 Mb e scaricarli
non mi alleggerisce niete?
Sullo scaricarli mi torna strano (non dimenticare che spesso la memoria
viene liberata solo quando la stessa viene richiesta, cioè solo se qualcuno
bussa), per l'occupazione mi verrebbe da scommettere che dipende molto da
due cose: Dimensioni di un record (con ammenicoli, più o meno palesi,
connessi) e, soprattutto, dal lato client o server. Il cursore lato client
(per quanto mi riguarda assolutamente ingestibile/inconcepibile in termini
prestazionali) fa in modo che _tutti_ i dati siano nella memoria del
client...

 ha scritto nel messaggio
news:kspvb.69602$hV.26...@news2.tin.it...

dunque, giusto per prova ho fatto un piccolo progetto dove apro, una alla
volta, 3 connessioni a 3 db Access diversi usando ADO e Jet 4.0.
lancio l'exe, l'occupazione è 2820 Kb
apro la prima connection, salgo a 6744 Kb
apro la seconda connection, salgo a 6948 Kb
apro la terza connection, salgo a 7128 Kb
chiudo tutte e tre (facendo la .Close e = Nothing di tutte e tre), scendo a
6444 Kb
mi viene da pensare al pooling delle connessioni, che mantiene cmq in
memoria le ultime connessioni aperte.......
tra l'altro, se continuo ad aprire/chiudere, aprire/chiudere il consumo di
memoria non tende e salire.
quando le tre connessioni sono tutte aperte, mi occupa 7128 Kb, con tutto
chiudo 6444.....


 chiudo 6444.....
Ok, mi trovo con tutto, ipotizzando 1000 recordset mi stabilizzerei solo
dopo averli aperti tutti. Poi o tutti chiusi o tutti aperti cambia poco.
Mi solleva sapere che non dipende da un errore mio ma che codì dev'essere.
Grazie.
Ciao, SK