Bonjour à tous,
J'ai un soucis de fuite mémoire avec le driver JDBC MySQL.
Dans une boucle, je fais environ 150 000 INSERT.
Avant d'arriver à la fin, l'appli sort sur un OutOfMemoryError. J'ai inspecté mon code, je ne vois pas de fuite mémoire. Après analyse de la mémoire heap, il semble que ce soit le driver MySQL qui consomme toute la mémoire :
A priori, pas de fuite mémoire non plus dans ma fonction d'insertion. J'ai essayé pas mal de chose : fermer mon preparedStatement et mon resultSet, forcer le passage du GC, rien n'y fait. En désespoir de cause, j'ai tenté une déconnexion / reconnexion, et là, ca fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 One instance of "com.mysql.jdbc.Connection" loaded by "sun.misc.Launcher$AppClassLoader @ 0x2xxxxxxxx8" occupies 759 916 912 (99,79%) bytes. The memory is accumulated in one instance of "java.util.HashMap$Entry[]" loaded by "<system class loader>".
Qu'est-ce que j'ai bien pu oublier ? Quelqu'un a t-il déjà été confronté à ce problème, quelle solution (je trouve la déconnexion / reconnexion pas élégante du tout) ?
Merci![]()
Partager