Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么VisualVm不显示运行中tomcat中的所有线程?_Java_Tomcat_Profiler_Visualvm - Fatal编程技术网

Java 为什么VisualVm不显示运行中tomcat中的所有线程?

Java 为什么VisualVm不显示运行中tomcat中的所有线程?,java,tomcat,profiler,visualvm,Java,Tomcat,Profiler,Visualvm,我的tomcat(版本:5.5.25)运行一个应用程序,我尝试使用它(版本:1.3.2)分析它。 一切看起来都不错,但并非所有的类和方法都显示在visualVM中。它们是线程[main]中缺少的线程。我知道这一点,因为这是我在遇到断点时收到的线程名称。在main之外运行的类,例如[worker1]、[worker2]、。。。显示正确 你知道原因是什么吗?或者我能试试什么 因为我运行的应用程序(称为)是封闭源代码的,所以他们可能已经定制了默认的tomcat配置。但它们允许我用自己的类扩展框架,而这

我的tomcat(版本:5.5.25)运行一个应用程序,我尝试使用它(版本:1.3.2)分析它。 一切看起来都不错,但并非所有的类和方法都显示在visualVM中。它们是线程[main]中缺少的线程。我知道这一点,因为这是我在遇到断点时收到的线程名称。在main之外运行的类,例如[worker1]、[worker2]、。。。显示正确

你知道原因是什么吗?或者我能试试什么

因为我运行的应用程序(称为)是封闭源代码的,所以他们可能已经定制了默认的tomcat配置。但它们允许我用自己的类扩展框架,而这些类正是我想要分析的


VisualVM I以下载的默认配置运行

以下是您无法看到“主”线程的几个原因:

  • 线程可能已退出

  • 线程可以通过调用
    thread.setName()
    更改其名称

如果您想找出真正的原因,可能需要查看Tomcat源代码



告诉您设置的位置。谷歌是你的朋友。

你可能需要定制评测根方法。见和。您还可以使用“Sampler”选项卡获取Tomcat正在做什么的高级图片。

VisualVM没有在线程[main]中显示我的方法调用的原因是VisualVM只允许同时分析多达32个线程。不可能允许监视更多线程。这已在“与NetBeans分析器的比较”一节中记录,他们说:

“分析线程限制始终为32。”


:-(

您可能在插件配置中错误地配置了“从类开始评测”

假设您已为评测配置了
org.acme.competition.*
(A):

但是您意外地使用以下命令分析了类
org.acme.reference.ReferenceImpl
(B):

$ cat source.txt | java -Xverify:none \
    -agentpath:/usr/share/visualvm/profiler/lib/deployed/jdk16/linux-amd64/libprofilerinterface.so=/usr/share/visualvm/profiler/lib,5140 \
    -cp bin/ org.acme.reference.ReferenceImpl
那么这将是错误的结果:

使用
org.acme.reference.
配置VisualVM的启动插件配置“从类开始评测”时,结果是正确的:


也请参见。

您确定他们没有重命名主线程吗?我对分析tomcat有点陌生。如何检查它?但是如果我在调用方法之前开始分析,在调用方法之后停止分析,那么主线程应该被调用,并且必须在分析程序中生成一个条目?不是吗?似乎有一个sett称为“限制配置文件线程的数量”的ing。因此,我的主线程没有被分析,因为它是例如线程编号33。但我知道如何/在哪里设置它。有什么想法吗?@Stephen I alreday找到了相同的链接,但它只描述了如果您使用visualVM的eclipse插件,您可以如何使用设置。我认为这在您的情况下是无效的。您设置了根方法吗?我添加到了“从类开始分析”,使用我的方法所在的顶级包名。但它没有被调用。我认为线程限制确实是原因,因为Aseentis Docbase创建了许多新线程。它们是必需的,因为它用于批处理大文件以进行输出管理。现在我使用根方法获得了它。它是”mypackage.*“我忘了一个。所以“mypackage.”不起作用。我现在很高兴!好的,我很高兴它对您起作用。是的,“mypackage.”不起作用。“从类开始分析”中有一个工具提示“文本区,它告诉你正确的语法。这篇文章也提到了正确的语法。就是这样!如果你将root方法设置为高级别,你需要在点后添加两个*(星)。例如,“mypackage.*”