Je traite un fichier texte très volumineux (plusieurs centaines de méga octets) et je tombe sur un out of memory.
Pourtant il s'agit d'un batch qui ne garde pas de référence sur les String créées lors de la lecture du fichier :
Je ne comprends pas pourquoi le GC ne détruit pas les String régulièrement puisqu'elles ne sont plus référencées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 BufferedReader input = new BufferedReader(new FileReader(file)); try { int count = 1; String line = input.readLine(); while (line != null) { traitement(line, count++); line = input.readLine(); if (count % 100 == 0) { System.gc(); } } } finally { input.close(); }
J'ai rajouté System.gc() en espérant que cela améliorerait la situation, mais cela ne fait que retarder le plantage sans l'empêcher
Partager