gpt4 book ai didi

java - JVM启动时会fork多少个线程?

转载 作者:行者123 更新时间:2023-12-01 19:06:22 25 4
gpt4 key购买 nike

我只是想避免上下文切换,因为它会引入大量延迟。因此,如果我的想法正确,我希望每个处理器最多有一个线程。如果处理器支持虚拟并行(我认为这就是超线程的名字!),那么我可以拥有双倍数量的线程。

例如:4 个超线程处理器 = 最多 8 个线程。

当然,操作系统也需要处理器,所以我在这里可能很天真。

无论如何,了解 JVM 在启动时创建的线程数是一个好的开始。

最佳答案

JVM 仅启动 1 个用户线程,也称为“主”线程。还有其他线程在后台运行,例如垃圾收集器、编译器、优化器、终结器等。

快速查看一个小应用程序的线程转储:

public static void main(String[] args) throws Exception {
Thread.sleep(100000);
}

演出:

"Low Memory Detector" daemon prio=5 tid=7f810c801000]
"C2 CompilerThread1" daemon prio=9 tid=7f810c800000
"C2 CompilerThread0" daemon prio=9 tid=7f8107037000
"Signal Dispatcher" daemon prio=9 tid=7f8107036000
"Surrogate Locker Thread (Concurrent GC)" daemon prio=5 tid=7f8107801000
"Finalizer" daemon prio=8 tid=7f810882a000 nid=0x1118cb000
"Reference Handler" daemon prio=10 tid=7f8108829000 nid=0x1117c8000
"main" prio=5 tid=7f8104801000 nid=0x109a52000 waiting on condition
"VM Thread" prio=9 tid=7f8108824800 nid=0x1116c5000 runnable
"Gang worker#0 (Parallel GC Threads)" prio=9 tid=7f8104802800
"Gang worker#1 (Parallel GC Threads)" prio=9 tid=7f8104803000
"Gang worker#2 (Parallel GC Threads)" prio=9 tid=7f8104803800
"Gang worker#3 (Parallel GC Threads)" prio=9 tid=7f8107800000
"Gang worker#4 (Parallel GC Threads)" prio=9 tid=7f8108800000
"Gang worker#5 (Parallel GC Threads)" prio=9 tid=7f8107000800
"Gang worker#6 (Parallel GC Threads)" prio=9 tid=7f8107001000
"Gang worker#7 (Parallel GC Threads)" prio=9 tid=7f8107002000
"Concurrent Mark-Sweep GC Thread" prio=9 tid=7f810701c000
"Gang worker#0 (Parallel CMS Threads)" prio=9 tid=7f81090c3000
"Gang worker#1 (Parallel CMS Threads)" prio=9 tid=7f810701b800
"VM Periodic Task Thread" prio=10 tid=7f810c812800
"Exception Catcher Thread" prio=10 tid=7f8104801800

关于java - JVM启动时会fork多少个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9916399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com