Bonjour (ou rebonjour) !
J'ai un bug très moche dans mon programme, une Memory Leak...
J'envoie une requête à un serveur et je récupère un fichier XML qui selon les options de la requête peut-être TRES TRES grand. J'unmarshall le résultat (déjà ça, ça a tendance à prendre de la place) mais je dois ensuite l'afficher !
Alors je récupère les valeurs stockées dans les objets initialisés par l'unmarshall et les affiche dans un JPanel.
Il se trouve qu'au-delà d'une certaine taille, il me fait un Memory Leak sans afficher le panel.
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
at java.awt.MultipleGradientPaintContext.calculateSingleArrayGradient(MultipleGradientPaintContext.java:336)
at java.awt.MultipleGradientPaintContext.calculateSingleArrayGradient(MultipleGradientPaintContext.java:336)
at java.awt.MultipleGradientPaintContext.calculateLookupData(MultipleGradientPaintContext.java:286)
at java.awt.MultipleGradientPaintContext.<init>(MultipleGradientPaintContext.java:198)
at java.awt.LinearGradientPaintContext.<init>(LinearGradientPaintContext.java:72)
A savoir qu'en utilisant des objets graphiques moins lourds (j'affiche par exemple une séquence de protéine sans couleur au lieu d'y mettre des couleurs), le seuil au-dessus de laquelle il me fait une Memory Leak est plus grand, donc je peux afficher plus de données.
Question : y-a-t-il un moyen d'afficher mon panel "par étapes" : j'affiche une partie de mes données, je passe par le garbage collector, j'affiche une autre partie de mes données etc... ?
Voilà voilà
Merci de votre lecture![]()
Partager