JVM
(1) 基本概念:
JVM 是可运行 Java 代码的假想计算机 , 包括一套字节码指令集, 一组寄存器, 一个栈,
一个垃圾回收, 堆 和 一个存储方法域. JVM 是运行在操作系统之上的, 它与硬件没有直接
的交互.
(2) 运行过程:
我们都知道 Java 源文件, 通过编译器, 能够生产相应的. Class 文件, 也就是字节码文件,
而字节码文件又通过 Java 虚拟机中的解释器, 编译成特定机器上的机器码 .
也就是如下:
1 Java 源文件 -->编译器 -->字节码文件
2 字节码文件 -->JVM-->机器码
每一种平台的解释器是不同的, 但是实现的虚拟机是相同的, 这也就是 Java 为什么能够
跨平台的原因了 , 当一个程序从开始运行, 这时虚拟机就开始实例化了, 多个程序启动就会
存在多个虚拟机实例. 程序退出或者关闭, 则虚拟机实例消亡, 多个虚拟机实例之间数据不
能共享.
2.1. 线程
这里所说的线程指程序执行过程中的一个线程实体. JVM 允许一个应用并发执行多个线程.
Hotspot JVM 中的 Java 线程与原生操作系统线程有直接的映射关系. 当线程本地存储, 缓
冲区分配, 同步对象, 栈, 程序计数器等准备好以后, 就会创建一个操作系统原生线程.
Java 线程结束, 原生线程随之被回收. 操作系统负责调度所有线程, 并把它们分配到任何可
用的 CPU 上. 当原生线程初始化完毕, 就会调用 Java 线程的 run() 方法. 当线程结束时, 13/04/2018 Page 21 of 283
会释放原生线程和 Java 线程的所有资源.
Hotspot JVM 后台运行的系统线程主要有下面几个:
来源: http://www.jianshu.com/p/b4c0cea38ed3