|
#1
|
|||
|
|||
|
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 ??? ________________________________________________ |
|
#2
|
|||
|
|||
|
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 ??? > ________________________________________________ |
|
#3
|
|||
|
|||
|
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 ??? > ________________________________________________ |
|
#4
|
|||
|
|||
|
Forse non riesco a capire cosa intendi.. posso tranquillamente usare
qualunque oggetto per memorizzare i dati che vegnono dal resultset, ma il problema rimane. Anche usando un ArrayList o una LinkedList nella fase in cui mi scorro il resultSet e inserisco ogni riga di dati all'interno del contenitore ( qualunque esso sia) ad un certo punto ottengo l' OutOfMemoryError. Considera che ho a che fare con MILIONI di record. Se non ho capito il tuo suggerimento ti sarei grato se fossi piu' chiaro in proprosito. Grazie Ciao ----------------------------------------------------------------------- L'email e' fasulla, fare reply di questo post sul newsgroup di origine ----------------------------------------------------------------------- Claudio Di Vita 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 ?? > ________________________________________________ > > Se c'è soluzione perché ti preoccupi ?? > Se non c'é soluzione perché ti preoccupi ??? > ________________________________________________ |
|
#5
|
|||
|
|||
|
Forse non riesco a capire cosa intendi.. posso tranquillamente usare
qualunque oggetto per memorizzare i dati che vegnono dal resultset, ma il problema rimane. Anche usando un ArrayList o una LinkedList nella fase in cui mi scorro il resultSet e inserisco ogni riga di dati all'interno del contenitore ( qualunque esso sia) ad un certo punto ottengo l' OutOfMemoryError. Considera che ho a che fare con MILIONI di record. Se non ho capito il tuo suggerimento ti sarei grato se fossi piu' chiaro in proprosito. Grazie Ciao ----------------------------------------------------------------------- L'email e' fasulla, fare reply di questo post sul newsgroup di origine ----------------------------------------------------------------------- Claudio Di Vita 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 ?? > ________________________________________________ > > Se c'è soluzione perché ti preoccupi ?? > Se non c'é soluzione perché ti preoccupi ??? > ________________________________________________ |
|
#6
|
|||
|
|||
|
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) |
|
#7
|
|||
|
|||
|
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) |
|
#8
|
|||
|
|||
|
On Fri, 29 Aug 2003 18:00:25 +0200, "[Ech3L0n] NSA"
<ech3l0n.IlDitoDalCulo@email.it> wrote: >lanciare un OutOfMemoryError (anche se è un errore grave, è sembre sembre=sempre scusate c'ho le dita un po' influenzate (e dire che "B" e "P" sulla tastiera sono abbastanza lontane!) -- "tanto va la gatta al largo che affoga" (per rispondere personalmente leva IlDitoDalCulo) |
|
#9
|
|||
|
|||
|
On Fri, 29 Aug 2003 18:00:25 +0200, "[Ech3L0n] NSA"
<ech3l0n.IlDitoDalCulo@email.it> wrote: >lanciare un OutOfMemoryError (anche se è un errore grave, è sembre sembre=sempre scusate c'ho le dita un po' influenzate (e dire che "B" e "P" sulla tastiera sono abbastanza lontane!) -- "tanto va la gatta al largo che affoga" (per rispondere personalmente leva IlDitoDalCulo) |
|
#10
|
|||
|
|||
|
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 |
| Thread Tools | |
| Display Modes | |
|