2010-10-01 509 views
7

我收到了數百個這樣的process_reaper線程,這些線程隨着時間的推移在我的應用程序中建立起來。任何人都知道這可能是什麼?他們似乎是在我使用的Runtime.exec(的),但是我毀了我的過程在最後聲明,但他們仍然顯示什麼是Java中的process_reaper線程?

屏幕截圖: 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(); 
      } 
    } 

回答

6

我還沒有看到這一個我自己,所以我搜索了一下;似乎進程收割者與Linux內核進程管理有關,並且是一個守護進程線程。它維護進程狀態,以便在進程終止時釋放/收集資源等。 This資源可能會幫助你。最後部分提到了收割者。

+1

感謝您的鏈接調用process.waitFor(),讀現在,任何想法如何擺脫他們? – James 2010-10-01 03:09:06

+0

從你的屏幕截圖看來,他們似乎被剝奪了。無論如何,它們是必需的,因爲您正在使用Runtime.exec()生成單獨的進程。我不太清楚如何擺脫它們,因爲我自己沒有看到它們:-) – 2010-10-01 03:15:10

+0

AH!感謝Sagar,這讓我感覺很好,我關閉並重新啓動了可視VM並且線程消失了,所以是的,他們正在被清理。謝謝:) – James 2010-10-01 03:39:59

0

必須Exec之後和之前destory(ASY動作)