Quando viene liberata la memoria che occupa un dataset sul server ?
Quando viene liberata la memoria che occupa un dataset sul server ?
press play on tape
-----
MP3 Listing
https://sourceforge.net/projects/mp3-listing
File Listing
https://sourceforge.net/projects/file-listing-2-0/
Quando nessuna altra parte del tuo codice fa piu' riferimento ad esso, il garbage collector lo timbra come prossimo alla morte e al passaggio successivo lo elimina del tutto.
Saluti a tutti
Riccardo
Originariamente inviato da riccardone
Quando nessuna altra parte del tuo codice fa piu' riferimento ad esso, il garbage collector lo timbra come prossimo alla morte e al passaggio successivo lo elimina del tutto.
C'e' un timeout oltre il quale lo spazzino interviene ?
press play on tape
-----
MP3 Listing
https://sourceforge.net/projects/mp3-listing
File Listing
https://sourceforge.net/projects/file-listing-2-0/
Non so bene cosa intendi per timeout cmq in linea di principio lo sviluppatore dovrebbe disinteressarsi (a parte per ragioni di studio) del garbage collector.
Naturalmente discorso diverso vale per le risorse occupate. Infatti un dataset e' un oggetto che non occupa risorse e quindi viene distrutto automaticamente dal gc come detto sopra. Se invece parliamo di occupazione di risorse come ad es. un oggetto connection, e' il programmatore a doversi preoccupare manualmente della sua chiusura.
Saluti a tutti
Riccardo
Sto sviluppando una parte di una applicazione che fa un uso intenso dei dataset, e siccome non la vedo proprio "performante" ... cominciavo a chiedermi per quanto tempo risiedessero in memoria e se fosse possibile gestire questa permanenza.
Ma a quanto mi dici, non credo di poter fare meglio del FW![]()
Mi sa che cmq i motivi dei rallentamenti sono da tutt'altra parte.
thx
press play on tape
-----
MP3 Listing
https://sourceforge.net/projects/mp3-listing
File Listing
https://sourceforge.net/projects/file-listing-2-0/
Personalmente e' piuttosto raro che ricorro ad un dataset e il piu' delle volte utilizzo direttamente oggetti datatable. Questo perche' il dataset č un oggetto inutilmente pesante quando non e' necessario ricorrere ad alcune delle funzionalitą offerte solo da lui (es. operazioni con xml, datarelations, merge). Un altro motivo di rallentamento che potrebbe "nascondersi" dietro all' ...uso intenso... e' quello di caricare troppi records nel dataset, fare un databind con un datagrid e far andare avanti e indietro allegramenteOriginariamente inviato da djciko
...uso intenso dei dataset...la pagina (viewstate compreso) tra client e server. Ma queste sono solo supposizioni
![]()
Saluti a tutti
Riccardo
In realtą uso anche io i relativi (dei dataset creati) datatable, ed ho anche provato a "Cacheizzare" il tutto:
...e ciclando poi sulle righe del dataTable (dalla cache) faccio altri accessi al DB che riempiono altri DataSet, ma il problema alla fine, analizzando bene č..il DB ! (ancora in fase progettazione).codice:Dim dsXLS As New DataSet Dim dtXLS as DataTable dtXLS = Cache("dtXLS") If dtXLS is Nothing then Try ..creo il dataset e.. dtXLS = dsXLS.tables(0) Cache("dtXLS") = dtXLS Catch ..errore End try End if
Non ci sono PostBacks e passeggiate nella History, nč DataGrids.
La veritą č soltanto che sto facendo una operazione troppo pesante per il povero DBServer dell'azienda![]()
![]()
press play on tape
-----
MP3 Listing
https://sourceforge.net/projects/mp3-listing
File Listing
https://sourceforge.net/projects/file-listing-2-0/
Sei obbligato ad usare i relativi datatable. Per accedere ai dati in una datatable in un dataset finisci sempre per riferirti appunto alla datatable. Il passaggio inutile e' quello di istanziare un dataset (a meno che non ci siano ragioni particolari come quelle che ho portato come esempio nel post precedente).Originariamente inviato da djciko
In realtą uso anche io i relativi (dei dataset creati) datatable
non ho parlato di history ma di viewstate che consiste in uno spazio di memoria (sotto forma di dati criptati nel codice della pagina html) che fa sempre avanti e indietro tra client e server e che e' impostato a true per default su ogni controllo asp.net che metti sulla pagina. Quindi se hai anche una dropdown con 1000 righe che tiene un centinaio di k di spazio, se quella dropdown ha anche il viewstate attivato raddoppi la quantita' (100 k x 2) di byte che fa avanti e indietro tra client e server.Non ci sono PostBacks e passeggiate nella History, nč DataGrids.
quello che hai fatto (a torto o a ragione) č di parcheggiare nella cache degli oggetti (es. la datatable). Da quel momento in poi se hai rallentamente (e non hai errori nel codice) questi non sono piu' dovuti al db (visto che i dati li prendi dalla cache).ed ho anche provato a "Cacheizzare" il tutto
Una alternativa e' quella di usare la capacita' delle pagine aspx di risiedere completamente in cache. Ci dovrebbe essere un articolo su freeasp che tratta proprio di questo.
Saluti a tutti
Riccardo
Invece purtroppo si perchč l'accesso principale č chachizzato ma i successivi no (tocco 5 tabelle, e nel ciclo sul set di dati principale (quello in cache, preso da un foglio Excel, per giunta) per ogni riga (alle volte sono anche nell'ordine delle 14.000) effettuo 4 select ed una eventuale insert per ogni gruppo di 2.Da quel momento in poi se hai rallentamenti (e non hai errori nel codice) questi non sono piu' dovuti al db (visto che i dati li prendi dalla cache).
E' qualcosa sul DBServer che si č appesantito...
Ho provato a cambiare macchina (copiando il db in locale in MSDE) e va come dovrebbe andare.
Mi interesserņ a cio' che dici di una intera pagina, cmq.
THX
![]()
press play on tape
-----
MP3 Listing
https://sourceforge.net/projects/mp3-listing
File Listing
https://sourceforge.net/projects/file-listing-2-0/