Thread : accumulation et fuites mémoires
Bonjour,
A priori, vu les fuites mémoires et le nombre de threads qui augmente sans cesse, il doit y avoir un problème dans la façon dont c'est codé dans l'application.
Voici la fonction appelée régulièrement :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| @Transactional
public List<InformationValideur> lectureJournee() {
try {
//Toutes les 60s : nouveau thread de rechargement
@Transactional
final class Launch implements Runnable {
public void run() {
try {
if (!ChargementJourneeEnCours) {
ChargementJourneeEnCours = true;
listeInformationValideurJournee = lectureJourneeCourante();
dateDernierChargementJournee = new Date();
ChargementJourneeEnCours = false;
}
} catch (Exception e) {
e.printStackTrace();
ChargementJourneeEnCours = false;
dateDernierChargementJournee = null;
}
}
}
Launch l = new Launch();
Thread internalThread = new Thread(l);
internalThread.start();
} catch (Exception e) {
ChargementJourneeEnCours = false;
}
return listeInformationValideurJournee;
} |
-->est-ce que quelque chose de mal saute aux yeux?
1°/Devrait-on explicitement glisser dans la méthode run() des instructions Thread.currentThread().interrupt(); ?
2°/Normalement on s'assure de n'appeler lectureJourneeCourante() qu'une fois mais est-ce que mettre cette fonction en synchronized peut être utile?
Merci.
Ci-dessous le code plus complet.