写点什么

Java 虚拟机原理

用户头像
风翱
关注
发布于: 2021 年 04 月 24 日
Java虚拟机原理

JVM 的主要组成部分:类加载器、运行时数据区、执行引擎。


运行时数据区主要包括:方法区、堆、Java 栈、程序计数寄存器。


方法区:存放从磁盘中加载进来的类字节码,程序运行过程中创建的类实例则存放在堆中。

Java 栈:每个线程独占,存放着方法运行时的局部变量。

程序计数寄存器:存放着当前线程执行到哪一行字节码指令。


执行引擎在执行字节码指令的时候,是解释执行的,也就是每个字节码指令都会被解释成一个底层的 CPU 指令,但是这样的解释执行效率比较差,JVM 对此进行了优化,将频繁执行的代码编译为底层 CPU 指令存储起来,后面再执行的时候,直接执行编译好的指令,不再解释执行,这就是 JVM 的即时编译 JIT。


JVM 垃圾回收器主要有 4 种:

  • Serial 串行垃圾回收器:只有一个线程执行垃圾回收。

  • Parallel 并行垃圾回收器:启动多线程进行垃圾回收。

  • CMS 并发垃圾回收器:垃圾回收线程和用户线程并发运行。

  • G1 垃圾回收器:将整个堆空间分成多个子区域,然后在这些子区域上各自独立进行垃圾回收,在回收过程中垃圾回收线程和用户线程也是并发运行。


在串行和并行垃圾回收过程中,当垃圾回收线程工作的时候,必须要停止用户线程的工作,否则可能会导致对象的引用标记错乱,因此垃圾回收过程也被称为 stop the world,在用户视角看来,所有的程序都不再执行,整个世界都停止了。


G1 综合了以前几种垃圾回收器的优势,适用场景更多。

发布于: 2021 年 04 月 24 日阅读数: 13
用户头像

风翱

关注

还未添加个人签名 2017.11.24 加入

勇于尝试,持续成长

评论

发布
暂无评论
Java虚拟机原理