bonjour,
J'ose espérer que mon pb n'est pas du à eclipselink mais j'en ai bien peur.
Pour mettre en evidence ce pb , j'ai fait le petit programme (junit) suivant:
Faire une boucle dans laquelle je crée un entitymanager , puis je load un objet Event , puis je ferme l'entityManager: La mémoire augmente sans arret a chaque boucle.
J'utilise Jprofiler pour voir le détail, et , en effet , la fermeture de l'entityManager ne libere pas les objets.
Le compteur i correspond bien aux nombres d'objets en memoire qu'affiche jprofiler.
Pourquoi ces objects ne sont pas libérés ?
Merci
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 int i = 0; String sql = "select distinct event from Event event where event.id=:idEvent"; while (true) { Thread.currentThread().sleep(100); try { em = SqlMainService.getInstance().getEntityManager(); List<Event> events = em.createQuery(sql).setParameter("idEvent", 1141).getResultList();//1182 i += events.size(); System.gc(); System.out.println("load " + i + " ..."); } finally { em.close(); System.out.println("Finally"); } }
Partager