出于好奇,我编写了Hello World并在我的打印声明中设置了一个断点。
public class Program
{
public static void main(String[] args)
{
System.out.println("Hello");
}
}
当突破点被击中时,我在Windows中启动了任务管理器以查看该JVM进程分配了多少线程。我很震惊地看到22.为什么这个简单程序产生了这么多线程?
答案 0 :(得分:7)
JVM使用一些守护程序线程(例如垃圾收集器,终结器等)。但是,在这种情况下,附加调试器实际上创建了一些线程来处理调试器连接。
答案 1 :(得分:1)
如上所述,JVM总是运行许多守护进程线程。要查看所有当前正在运行的线程,请在Java VisualVM
文件夹中打开JDK-->bin
,然后转到“线程”。在那里,您可以看到所有正在运行,正在休眠,等待和监视线程。
目前在我的VisualVM
中,我有19
个活动主题,其中15
是守护程序主题。
答案 2 :(得分:1)
另外,FYI刚刚发现JVM将至少 n 个线程分配给GC,其中 n 是核心数。资料来源:http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#par_gc。这解释了我的8个。