2010-10-01 21 views
7

Obtengo cientos de estos subprocesos process_reaper que se acumulan con el tiempo en mi aplicación. Alguien tiene alguna idea de lo que estos pueden ser? Parecen estar en mi uso de Runtime.exec() sin embargo yo estoy destruyendo mi proceso en un comunicado por último pero todavía aparecen¿Qué es un subproceso process_reaper en Java?

captura de pantalla: http://www.dropmocks.com/mBxM5

Process proc = null; 
     String line; 
     try { 
      logger.info("Trying to execute command " + Arrays.asList(command).toString().replace(",", "")); 
      proc = Runtime.getRuntime().exec(command); 

     } catch (IOException e) { 
      logger.info("IOException while trying to execute " + command); 
      return false; 
     } finally { 
      if(proc != null) { 
       proc.destroy(); 
      } 
    } 

Respuesta

6

No he visto éste mismo, así que busqué un poco; parece que un reaper de proceso está relacionado con la gestión de procesos del kernel de Linux y es un hilo de daemon. Mantiene el estado del proceso para que los recursos puedan ser liberados/liberados/recolectados en la terminación del proceso, y así sucesivamente. This recurso podría ayudarlo. Hay una mención sobre los segadores en las partes finales.

+1

gracias por el enlace, leer ahora, alguna idea de cómo deshacerse de ellos? – James

+0

Desde su captura de pantalla parece que están siendo eliminados. De todos modos, son necesarios ya que está generando un proceso separado usando Runtime.exec(). No estoy muy seguro de cómo deshacerme de ellos ya que no los he visto :-) –

+0

AH! gracias a Sagar, eso me avisó, cerré y reinicié VM visual y los hilos ya no estaban, así que sí, están siendo limpiados. gracias :) – James

0

debe llamar Process.waitFor() después de exec y antes Destory (acción asy)