Skip to content

Latest commit

 

History

History
17 lines (12 loc) · 1.51 KB

jvm_threads.md

File metadata and controls

17 lines (12 loc) · 1.51 KB

JVM 线程

这里所说的线程(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 主要系统线程