|
#11
|
|||
|
|||
|
Ektico ha scritto:
> Concordo.. > "Claudio Di Vita" <addabe@tin.it> wrote in message > news:1vpu4ayym7mam$.xaq8nbaxnt3g$.dlg@40tude.net.. . > > Il Fri, 29 Aug 2003 15:39:29 +0200, John Smith ha scritto : > > > > > Ho una JTable che dovrebbe contenere i risultati di una query. Il > > > problema e' che quando il numero di dati e' molto elevato l'oggetto > > > Vector utilizzato dal DefaultTableModel della Jtable che contiene i dati > > > va logicamente in OutOfMemoryError quando eseguo troppi inserimenti. > > > > > Eppure devo fare in modo che l'utente possa scorrere nella tablla TUTTI > > > i dati della query . > > > > Non potresti memorizzare le informazioni che ottieni in un altro oggetto > > (ad esempio una LinkedList) e poi definirti un tuo TableModel per la > > tabella che per gestire le informazioni utilizza l'oggetto che hai deciso > > di usare per memorizzare i dati del ResultSet ?? > > ________________________________________________ > > > > Se c'è soluzione perché ti preoccupi ?? > > Se non c'é soluzione perché ti preoccupi ??? > > ________________________________________________ Quanti MB Ram ha il tuo personal computer? -- questo articolo e` stato inviato via web dal servizio gratuito http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it |
|
#12
|
|||
|
|||
|
[Ech3L0n] NSA wrote:
> On Fri, 29 Aug 2003 15:47:31 +0200, Claudio Di Vita <addabe@tin.it> > wrote: > > >>Il Fri, 29 Aug 2003 15:39:29 +0200, John Smith ha scritto : >> >> >>>Ho una JTable che dovrebbe contenere i risultati di una query. Il >>>problema e' che quando il numero di dati e' molto elevato l'oggetto >>>Vector utilizzato dal DefaultTableModel della Jtable che contiene i dati >>>va logicamente in OutOfMemoryError quando eseguo troppi inserimenti. >> >>>Eppure devo fare in modo che l'utente possa scorrere nella tablla TUTTI >>>i dati della query . >> >>Non potresti memorizzare le informazioni che ottieni in un altro oggetto >>(ad esempio una LinkedList) e poi definirti un tuo TableModel per la >>tabella che per gestire le informazioni utilizza l'oggetto che hai deciso >>di usare per memorizzare i dati del ResultSet ?? > > > Definire un TableModel alternativo è la soluzione corretta. > Usando però un LinkedList come backing store per il resulset vuol dire > continuare a conservare tutto il resultset in memoria, quindi anche il > LinkedList ad un certo punto darebbe problemi di memoria esaurita. > > Secondo me si potrebbe creare una specializzazione di Vector o di > ArrayList che utilizzi come backing store un file temporaneo... l'idea > è stuzzicante, quasi quasi inizio a lavorarci sopra :P > Se l'interfaccia rimane la stessa di Vector, si possono nascondere > tutte le operazioni sul file. Se poi lo spazio su disco è esaurito (te > ne accorgi dalle eccezioni lanciate quando si tenta di creare nuovi > file o di scrivere in coda ad un file esistente) è sufficiente > lanciare un OutOfMemoryError (anche se è un errore grave, è sembre > possibile lanciarlo con throw, perchè OutOfMemoryError deriva da > Throwable). > L'unico problema potrebbe essere quello delle prestazioni... un Vector > fatto in questo modo è molto lento, quindi dovremmo pensare anche ad > una "cache" interna abbastanza intelligente. Tale cache dovrebbe > cercare di capire almeno quando si tenta di scorrere la lista in modo > sequenziale. In questo caso la velocità potrebbe migliorare > "precaricando" un tot di record dal backing store. > > Stai a vedere che salta fuori un gestore di memoria virtuale in java! > (no vabbè ora sto vaneggiando) > > > > -- > "tanto va la gatta al largo che affoga" > (per rispondere personalmente leva IlDitoDalCulo) io ho fatto una classe che implementa l'interfaccia list e all'interno lavora su un resultset. poi un tableModel che lavora su list cosicché se i dati sono pochi gli passo un arraylist tradizionale altrimenti questa sorta di list su Resultset...a dir la verità ancora non ho provato la sua effetiva funzionalità xò l'idea mi sembra buona l'unico problema e che possoordinare l'ErrayList tradizionale secondo diversi parametri ma penso ke se ordino un arraylist di milioni di elementi ci mette una vita quindi bisognerebbe implementare qualcosa ke fa ricaricare i dati dal db secondo altro ordinamento senza però cambiare il tablemodel che lavora su list...ci penserò |
| Thread Tools | |
| Display Modes | |
|