在Java应用程序中查找线程创建源

我正在研究一个具有线程问题的Java应用程序。

在连接Netbeans分析器一段时间使用这些应用程序时,我可以看到创建了多个线程。 他们中的大多数在.5 seconds完成。 我只能在应用程序中找到SwingWorkers。

此外,探查器显示的大部分线程都是普通线程,而不是SwingWorkers。 除非这些线程是由SwingWorker间接创建的,否则我怀疑应用程序使用的某些库正在创建它们。

现在我想删除这个问题。 但是我找不到确定线程创建源的方法。 如果你可以请建议一些其他的剖析器/工具,通过它我可以找到线程创建的来源(方法)。


如果使用Eclipse及其调试器是一个选项,您可以尝试以下操作:

  • 将代码导入到Java项目中。
  • 按Ctrl-Shift-T(打开类型),输入“线程”。 Thread类的二进制源编辑器打开。
  • 在“大纲”视图中选择所有线程构造函数,使用上下文菜单“切换方法断点”。 这为构造函数创建了断点。
  • 运行和调试。
  • 另外

    您可以获得Yourkit Java分析器,该分析器也可用于评估。 它可以显示应用程序中创建的线程,包括它们的堆栈跟踪(线程完成后)。 它不会显示线程的创建位置,但线程的堆栈跟踪可能会为您提供有关涉及的库的一些线索。


    JProfiler可以做到这一点。 线程监视器视图显示创建线程的堆栈跟踪 - 如果此时CPU记录处于活动状态:

    在这里输入图像描述

    免责声明:我公司开发JProfiler

    链接地址: http://www.djcxy.com/p/82421.html

    上一篇: Finding Source of Thread Creation in a Java application

    下一篇: Rescuing a swallowed Exception in Java