为什么VisualVM不在Linux上显示守护程序线程?

时间:2012-02-18 17:36:13

标签: java linux multithreading daemon

我在Linux上遇到了守护程序线程的问题。我在Windows服务器上的应用程序运行正常,当我创建一个线程转储时,我可以看到一个线程是否是守护进程。

但是当我在Linux服务器上将我的应用程序移动到Tomcat并使用Java Visual VM创建转储时,我不再在线程的详细信息中看到该守护进程。

这是否意味着守护程序线程仅适用于Windows?是否有一些解决方法或我们是否需要在应用程序退出时关闭每个线程?

2 个答案:

答案 0 :(得分: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上运行得很好。

  

是否有一些解决方法或我们是否需要在应用程序退出时关闭每个线程?

当进程终止时,操作系统负责收集所有相关资源,包括线程。所以,你不需要做任何事情。事实上,正如旁注,JVM不允许您直接处理线程的生命周期。

答案 1 :(得分:1)

看起来您正在通过JMX连接监控您的应用程序。在这种情况下,有关守护程序/非守护程序线程类型的信息不可用。