Bonjour � tous,
Je voulais savoir s'il y avais des chausse-trappes et/ou des astuces particuli�res pour manipuler de gros tableaux en Java ? Je m'explique: je doit afficher des tableaux (avec un JTable) d'une taille d'environ 6400 x 20 Strings, ce qui prends quand m�me un peu de m�moire. Bien s�r, d�s que j'en ouvre 5 ou 6... OutOfMemoryException =)

Donc, y'a-t'il des techniques particuli�res dont je n'aurais pas connaissance pour g�rer ces donn�es ? Pour le moment je ne vois que:
- emp�cher l'utilisateur d'ouvrir trop de tableaux en m�me temps (en testant avec un Runtime.getRuntime().freeMemory() si la m�moire restante est suffisante pour ouvrir un tableau de plus
- sachant que les donn�es sont r�cup�r�es dans une base SQL, est qu'au sein du driver (MySQL-connector), lors d'un executeQuery() les r�sultats sont stock�s dans un grand Vector, peut-�tre que l'on peut r��crire le code pour avoir un acc�s direct � ce Vector ? Je dis �a par ce que pour le moment j'ai deux fa�on d'acc�der � ces donn�es:
- un Iterator modifi�, qui me permet de r�cup�rer ligne apr�s ligne tout le tableau (en fait ca �tend plus ou moins ce que fait ResultSet.next(), qui est lui-m�me un Iterator)
- une classe qui, � partir de cet Iterator, me cr�e un gros Object[][] o� mes infos sont plac�es. C'est ce tableau que j'injecte dans le JTable. C'est peut-�tre pas la meilleure chose � faire ??
- enfin, je peux toujours lancer constamment le garbage collector... En esp�rant grapiller quelques octets en m�moire

Ce que je me demande c'est si c'est pertinant de garder en m�moire de gros Object[][]. Mais cela semble la seule chose que le JTable est capable d'ingurgiter (je le vois mal utiliser l'Iterator qui puise les donn�es de la base SQL � la source).

Modifier les param�tres de la JVM pour lui autoriser plus de m�moire n'est pas possible pour mon cas; pouvez-vous me dire si je m'y prends mal ? Heureusement qu'en Java on ne travaille que par pointeurs... Sinon je n'ose pas imaginer la place m�moire que m'aurai pris ces tableaux, � force de les passer d'une classe � l'autre =)

Aur�lien Mazurie

Répondre à