Bonjour,
J'ai un problème de Out of Memory en faisant tourner un code mapreduce sur Hadoop. Plus précisement:
- Je vois plusieurs fois dans mes log org.apache.http.conn.ConnectTimeoutException. Cette exception est catchée et mon code finit par réussir à tout lire.
- Dès qu’il arrive à tout lire, je vois des messages de logging apparaître datant de plus de 10 minutes. Ces messages sont générés par java.util.logging.
- Jvisualvm montre que la mémoire est surtout occupée par des char[].
Il est probable que mes requêtes finissant en ConnectTimeoutException soient trop grosses et conduisent au Out-of-memory.
Cependant, je me demande s'il est possible que le Out-of-memory soir causé par le logging. Peut-être que le thread responsable du logging est pausé pendant le TimeoutException et ne vide pas son buffer de messages : je vois vraiment apparaitre d'un coup plein de vieux messages dans le stdout d'Eclipse.
Cela vous semble-t'il possible ? Comment se comporte java.util.logging vis-à-vis du threading ? Y'a-t'il un thread différent du principal responsable de logger ?
Merci d'avance.
Partager