2012-02-18 78 views
5

我在Linux上的守護進程線程有問題。我在Windows服務器上的應用程序工作正常,當我創建線程轉儲時,我可以看到線程是否是守護進程。爲什麼VisualVM在Linux上不顯示守護程序線程?

但是,當我將應用程序移動到Linux服務器上的Tomcat並使用Java Visual VM創建轉儲時,我再也看不到線程細節中的守護程序。

這是否意味着守護線程僅在Windows上工作?有沒有一些解決方法,或者我們需要關閉應用程序退出每個線程?

+0

守護進程線程在Linux上正常工作。我無法幫助你visualvm,也許你有兩個不同的版本? – bmargulies 2012-02-18 18:15:10

回答

2

http://docs.oracle.com/javase/6/docs/technotes/guides/visualvm/threads.html - 這似乎表明Visual VM與正常線程和守護進程線程很好地交易。我已經使用Visual Vm中的實時監視器,並且在Linux上運行得很好。

但是,當我將應用程序移動到Linux服務器上的Tomcat並使用Java Visual> VM創建轉儲時,我沒有再看到線程細節中的守護進程。

您是否可以僅顯示樣本輸出?

這是否意味着守護線程只在Windows上工作?

沒有!守護進程線程在Linux上工作得很好。

是否有一些解決方法,或者我們需要關閉應用程序退出每個線程?

當進程死亡時,OS負責收集所有相關資源,包括線程。所以,你不需要做任何事情。事實上,就像一個附註,JVM不會讓你直接處理線程的生命週期。

+0

「線程1」 - 線程t @ 101 java.lang.Thread.State中:TIMED_WAITING \t在sun.misc.Unsafe.park(本機方法) \t - 停車等待... – user710818 2012-02-20 06:39:21

+0

沒有優先權和守護進程,在Windows上我可以看到: – user710818 2012-02-20 06:40:05

+0

可能是依賴於在調試模式下啓動tomcat還是沒有? – user710818 2012-02-20 07:46:29

1

它看起來像你通過JMX連接監視你的應用程序。在這種情況下,有關守護進程/非守護進程線程類型的信息不可用。