java - 检测谁创建了线程(使用 Eclipse)

标签 java multithreading eclipse stack-trace

如何找出谁在 Java 中创建了线程?

想象一下:您在复杂的插件环境中使用了大约 30 个第三方 JAR。你启动它,运行大量代码,进行一些计算,最后调用shutdown()。

这个生命周期通常运行良好,除了在每次运行时一些(非守护进程)线程仍然悬空。如果每次关机都是最后一次关机,这不会有问题,在这种情况下我可以简单地运行 System.exit() 。但是,这个循环可能会运行多次,并且每次通过都会产生更多的垃圾。

那么,我该怎么办?我在 Eclipse 的调试 View 中看到了线程。我看到了他们的堆栈跟踪,但他们不包含任何关于其来源的提示。没有创建者的堆栈跟踪,没有可区分的类名,什么都没有。

有人知道如何解决这个问题吗?

最佳答案

好的,我能够自己解决(某种程度上)问题:我在

中设置了一个断点
Thread.start() 

并手动逐步执行每个调用。通过这种方式,我很快发现 Class.forName() 初始化了许多静态代码,这些代码反过来又创建了这些神秘的线程。

虽然我能够解决我的问题,但我仍然认为更一般的任务仍未解决。

关于java - 检测谁创建了线程(使用 Eclipse),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1227275/

相关文章:

java - 当数组足够时使用 Java List

java - 如何在 Java 中创建内存高效的数据结构

c++ - 多线程说明

c# - 事件和线程

java - 使用 Eclipse 进行 GWT 代码验证

java - 如何使用反射确定字段类型是否为列表(或任何其他类型的集合)?

Java volley空json对象

java - 服务时间与线程数成正比

android - 在 Eclipse 中使用不带反射的隐藏 API

java - 将搜索栏构建到 Eclipse View 插件中