java为什么我的单线程hello world应用程序使用22个OS线程?
出于好奇,我写了Hello World,并在我的打印声明上设置了一个断点
public class Program
{
public static void main(String[] args)
{
System.out.println("Hello");
}
}
当到达断点时,我在windows中调出任务管理器,查看JVM进程分配了多少线程。看到22岁,我很震惊。为什么这个简单的程序会产生这么多线程
# 1 楼答案
另外,仅供参考,刚刚发现JVM将至少为GC分配n个线程,其中n是核心数。资料来源:http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#par_gc。这就解释了我的第八个问题
# 2 楼答案
JVM利用一些守护进程线程(例如垃圾收集器、终结器等)。但是,在本例中,附加调试器实际上创建了几个线程来处理调试器连接
# 3 楼答案
如上所述,有许多守护进程线程总是由JVM运行。要查看所有当前正在运行的线程,请打开
Java VisualVM
文件夹中的JDK >bin
并转到线程。在那里,您可以看到所有正在运行、睡眠、等待和监视线程目前在我的
VisualVM
中,我有19
个活动线程,其中15
是守护进程线程