@vins78 said:
A mio parere...
Sono nulla per il server.
Non c'è nessuna differenza nel fare 5 close e 5 nothing oppure 5 close+nothing.
Dipende da cosa fai con i recordset è quanti record ciascuno di essi gestisce nella select. In ogni caso è buona norma disfarsi degli oggetti non più necessari non appena possibile sia per motivi di efficienza del codice sia per motivi di "efficacia" e "manutenibilità" dello stesso.
Se invece usi 50 variabili globali, allora è importante chiudere il recordset: impostarlo a nothing non serve più di tanto.
Infatti nel caso del nostro amico si tratta di Variabili Globali (tutte)
Al close non hai più una connessione attiva al db, che è quella che ti consuma risorse. vbscript non ha un garbage collector differito, come .NET.
In .NET è vitale chiudere l'oggetto e rimuovere ogni riferimento all'oggetto stesso, pena uno spreco di risorse esagerato.
Cioè, in vbscript/vb appena un oggetto non è più usato viene liberato (close + nothing).
In .NET questa operazione viene fatta in un secondo momento, a piacimento del garbage collector, quindi anche dopo diversi minuti e quindi la risorsa rimane allocata.
Quindi, in .NET se usi una variabile locale recordset, devi assicurarti che l'oggetto sia chiuso, anche nel caso si verifichi un'errore e la tua funzione sia terminata preventivamente (vale a dire, devi gestire nell'on error la chiusura di tutti gli oggetti).
Grazie per l'utilissimo mini-tutorial sul Garbage Collector di ASP.NET