2010-10-01 8 views
7

Dostaję setki wątków procesu process_reaper, które narastają w czasie w mojej aplikacji. Ktoś ma pojęcie, co to może być? Wydają się być w moim wykorzystania Runtime.exec() jednak mam niszcząc mój proces w finally ale wciąż pojawiają sięCo to jest wątek process_reaper w Javie?

zrzut ekranu: 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(); 
      } 
    } 

Odpowiedz

6

nie widziałem ten sam, więc trochę szukałem; wygląda na to, że procesownik jest powiązany z zarządzaniem procesami jądra Linux i jest wątkiem demona. Utrzymuje stan procesu, dzięki czemu zasoby mogą być uwalniane/uwalniane/gromadzone podczas kończenia procesu i tak dalej. This zasób może ci pomóc. W końcowych częściach jest wzmianka o żniwiarzach.

+1

dzięki za link, teraz czyta, jakiś pomysł, jak się ich pozbyć? – James

+0

Wygląda na to, że z ekranu są usuwane. W każdym razie są one wymagane, ponieważ tworzysz oddzielny proces za pomocą Runtime.exec(). Nie jestem pewien, jak się ich pozbyć, ponieważ sam ich nie widziałem :-) –

+0

AH! dzięki Sagar, który mnie przechylił, zamknąłem i wznowiłem wizualizację VM, a nici zniknęły, więc tak, są oczyszczane. dzięki :) – James

0

należy zadzwonić process.waitFor() po Exec i przed destory (działanie ASY)