Bonjour,
Je parcours chaque table de ma base de données FireBird. Ensuite je récupère l'id de chaque enregistrement de chaque table pour les insérer dans un autre table. Il y a environ 28000 enregistrements dans la base de données ( tout se fait en local ). Sachant que j'ai mis cette méthode qui est appelé par un Runnable invokeLater qui lui est appelé dans un thread.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Thread thread = new Theard(){
public void run(){
Runnable runnable = new Runnable(){
public void run(){
// lancement de la méthode
}
}
EventQueue.invokeLater(runnable );
}
}
thread.start(); |
Donc pour les 12000 premier enregistrement çà fonctionne bien ensuite je n'arrive plus à insérer. Cela me met l'erreur suivante au moment de la 12000e ( environ ) insertion donc c'est au moment des insertions que ca plante :
erreur lors de l'insertion : GDS Exception. 335544430. unable to allocate memory from operating system
Donc si j'ai bien compris j'ai plus assez de mémoire sur mon pc pour continuer.( la flaime d'achater un autre pc
)
J'ai tenté :
1 2 3
|
// Lance le ramassemiettes pour tenter de tuer les objets
System.gc(); |
Mais sans résultat, j'ai fait un sleep, sans résultat.
Comment je pourrai faire pour libérer la mémoire pour que mes insertions aillent jusqu'à la fin de mes 28000 enregistrements ??
Est-ce un problème d'un trop grand nombre d'insertions successives dans la bdd ?? personnellement je ne pense pas.
Je ne vois vraiment pas comment régler mon problème.
Merci d'avance pour votre aide,
Cordialement
Partager