Salut,
J'ai monitoré un peu mon appli avec jconsole et j'ai remarqué un gros problème de threads qui ne disparaissent pas.
Voici le thread en question (j'en ai beacoup des comme ça et bien sur la JVM péte au bout d'un moment) et les infos données par jconsole :
Name: RMI RenewClean-[138.96.218.48:57876]
State: TIMED_WAITING on java.lang.ref.ReferenceQueue$Lock@1450bd
Total blocked: 10 Total waited: 25
Stack trace:
java.lang.Object.wait(Native Method)
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
sun.rmi.transport.DGCClient$EndpointEntry$RenewCleanThread.run(DGCClient.java:500)
java.lang.Thread.run(Thread.java:595)
Donc aprés quelques recherches j'ai pris conscience que cela pouvais eventuellement venir de réferences RMI non liberés ce qui provoque le fait que le DGC, ne passe jamais (la méthode unreferenced de ma classe étendant UnicastRemoteObject n'est jamais appelé) .
Dans la jdk voici la signification donné pour TIMED_WAITING : A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.
Et apparament ce "specified waiting time" approche plus la Long.MAX_VALUE qu'autre chose.
Est-il possible de connaitre la Thread qui garde le monitor lock ?
Ou alors, en étant plus général est il possible de connaitre les objets qui gardent les références RMI ?
---------------
Scheme is a programmable programming language ! I heard it through the grapevine !