jTable-Problem --> java.lang.OutOfMemoryError

Status
Nicht offen für weitere Antworten.

gondor

Bekanntes Mitglied
hallo liebe java-leute!

ich habe ein problem beim einlesen einer jTable. ich möchte gerne werte aus meiner
db in die tabelle einfügen und diese anzeigen lassen. da teilwiese mehr als >50.000
zeilen und ca. 1-100 spalten geladen werden könnten, gibt es natürlich einen fehler,
sobald der speicher nicht mehr mitmacht --> java.lang.OutOfMemoryError

25.000 zeilen und 8 spalten sind aber noch anzeigbar (bei 512 mb)

db: mysql 4.x

jetzt meine fragen:

- wie kann ich den fehler abfangen? ich kann leider nicht entdecken, von wo die
exception geworfen wird. möchte bei diesem fehler, dem anwender aufmerksam
machen, dass er die tabelle aufgrund seines (kleinen) speichers nicht angezeigt
bekommt...

- wie sollte man vorgehen, wenn man daten aus der db in die jTable lesen will?
gibt es da evtl. tricks oder tipps, damit dieses recht 'zügig' geschieht? bei 25.000
werten mit 8 spalten dauert das schon mal 10 sek über meine funktion.

wie macht ihr das? habt ihr auch schon einmal mit solch einer großen datenmenge
zu tun gehabt? sollte man das überhaupt in eine jTable darstellen? gibt es andere
wege?

hoffe hier auf ratschläge 😉 vielen dank!
 
ööh.. hast du vielleicht einen eiigenene renderer durch den soviel speicher verbraucht wird?? andernfalls würd ich die daten vielleicht nicht alel auf einmal auslesen und evtl. auchnicht alle in einer tabelle darstellen... wie wärs mit mehreren seiten, auf jeder seite 1000 teilen oder so und die daten werden dann on demand aus der db geladen?

aber lass erstmal nen profiler oder so drüberlaufen, damit du weißt wo der ganze speicher hin geht...
 
ui schnelle antwort...

vielen dank. gute idee mit den seiten. könnte ich machen, aber wie ist das programmier-technisch zu machen? auch das er dann die daten 'on demand' läd? kannst du mir da ein wenig auf die 'sprünge' helfen? bin echt ratlos... würde ja gerne 'alle' daten darstellen 😉

was meinst du mit profiler/ renderer? laut task-manager belegt die task etwa 20 MB. wenn ich jetzt den ganze tabellen-wust mache, werden es schnell 80MB bis 'feierabend'... *argh*

danke für deine antwort 'roar' 😉
 
naja mal einen java profiler benutzen der dir sagt an welcher stelle deines programms soviel speicher verbraucht wird...
und meine andre frage war ob du vielleichtg einen eigenenen renderer für deine JTable geschrieben hast. denn schlecht implementierte renderer können schnell mal alles zum abnippeln bringen 😉

die andre idee war, dass du vielleicht mehrere tabs machst oder so.. oder mit CardLayout. und immer wenn eine neue seite aufgerufen wird, werden die daten für die entsrepchenden zeilen aus der datenbank geladen. also nicht alels auf einmal. und dann cachen. das müsstest du dann aber alels selbst implementiern...
 
hi roar!

ein profiler 😉 gute idee... bislang habe ich von diesen tools noch nie etwas gehört.
hatte deswegen gleich gestern noch versucht einen zu installieren (jProbe), jedoch
gab es schwierigkeiten bei der installation (license-file). könntest du mir einen
profiler empfehlen der gut, möglichst effizient + noch dazu freeware ist?

welche tools sind denn als entwickler ebenso 'umumgänglich'? bzw. gelten als
'must-have'? bin ja für alles offen.

hier noch einmal zu meiner jTable:

wirkliche renderer benutze ich gar nicht bzw. kaum. die tabelle wird in ihrer 'einfachsten'
form dargestellt... ohne viel schnick-schnack 😉

gibt es dennoch eine möglichkeit die exception abzufangen?

herzlichen dank bisher für deine antworten...
 
gondor hat gesagt.:
ein profiler 😉 gute idee... bislang habe ich von diesen tools noch nie etwas gehört.
hatte deswegen gleich gestern noch versucht einen zu installieren (jProbe), jedoch
gab es schwierigkeiten bei der installation (license-file). könntest du mir einen
profiler empfehlen der gut, möglichst effizient + noch dazu freeware ist?

welche tools sind denn als entwickler ebenso 'umumgänglich'? bzw. gelten als
'must-have'? bin ja für alles offen.

hehe. ich muss gestehen, dass ich auch noch nie einen profiler hatte (außer dem hprof.exe) 😱)
ich hatte noch nie speicherprobleme...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben