2012-02-18 73 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连接监视你的应用程序。在这种情况下,有关守护进程/非守护进程线程类型的信息不可用。