Bonjour à tous et merci par avance de votre aide.
Je vous explique mon problème.
J'ai une JTable basée sur un AbstractModel étendu avec un ArrayList comme data.
Par défaut quand je fais des ajouts data.add(Object) puis firetablerowsInserted la ligne s'ajoute sans problème à mon tableau. Seul problème c'est qu'il peut m'arriver d'ajouter des centaines de milliers de lignes et du coup ma RAM monte vite à plus d'1Go.
N'ayant pas spécialement besoin de toutes les lignes, je me suis dit c'est pas grave je vais faire défiler les lignes et garder visible dans mon JTable que les 100 dernières lignes (en faisant des add et remove quand cela dépasse) me disant que comme cela j'aurais une consommation mémoire stable.
Malheureusement, cela ne change rien du tout, ma consommation mémoire continue d'augmenter malgré cela alors que dans l'idée à chaque ligne supprimée je pensais récupérer de la mémoire.
J'ai pu voir que si je ne fais pas de firetablerowsInserted à chaque insertion mais juste firetabledataChanged à la toute fin de l'exécution du code, alors la mémoire est stable et peu consommatrice. J'en déduit donc un problème d’utilisation du composant graphique. Mais comme mes utilisateurs ont besoin de voir les lignes défiler j'ai besoin de trouver un moyen de faire autrement.
Voilà pourquoi je demande de l'aide n'étant pas très familier avec l'utilisation mémoire des composants graphiques Java.
Qu'est-ce-que j'ai mal compris et que je fais mal ?
Et auriez vous des idées de comment faire mieux cela ?
Merci beaucoup
PS : Je ne peux pas mettre de code ce soir mais si besoin j'en mettrais demain.
Bonne soirée
Partager