这里所说的线程(Thread)指程序执行过程中的一个线程实体。JVM 允许一个应用并发执行多个线程。Hotspot JVM 中的 Java 线程与原生操作系统线程有直接的映射关系。当线程本地存储、缓冲区分配、同步对象、栈、程序计数器等准备好以后,就会创建一个操作系统原生线程。Java 线程结束,原生线程随之被回收。操作系统负责调度所有线程,并把它们分配到任何可用的 CPU 上,当原生线程初始化完毕,就会调用 Java 线程的run()
方法执行线程体,当线程结束时,会释放原生线程和 Java 线程的所有资源。
HotSpot JVM 后台运行的系统线程主要有如下几个:
线程 | 说明 |
---|---|
虚拟机线程 (VM thread) | 等待 JVM 到达安全点操作出现。这些操作必须要在独立的线程里执行,因为当堆修改无法进行时,线程都需要 JVM 位于安全点。这些操作的类型有:Stop-the-World 垃圾回收、线程栈 Dump、线程暂停、线程偏向锁(Biased Locking)解除等。 |
周期性任务线程 | 负责定时器事件(也就是中断),用来调度周期性操作的执行。 |
GC 线程 | 支持 JVM 中不同的垃圾回收活动。 |
编译器线程 | 线程在运行时将字节码动态编译成本地平台相关的机器码。 |
信号分发线程 | 线程接收发送到 JVM 的信号并调用适当的 JVM 方法处理。 |
表:HotSpot JVM 主要系统线程