1. JVM
1.1. JVM的组成构造
JVM主要由类加载器、运行时数据区、执行引擎三个部分组成。
- 程序计数器:记录程序执行的位置,有了程序计数器,就可以保证在涉及线程上下文切换的情景下,程序依然能够正确无误地运行下去。
- Java虚拟机栈:存着程序运行时的局部变量,主要包含局部变量表、操作数栈。
- 本地方法栈:为native方法服务
- 方法区:线程共享,用于存储类的元信息、静态变量、常量、全局变量、普通方法的字节码等内容。
- 堆:线程共享、存储实例对象和数组
1.2. JVM的垃圾回收
JVM通过一种可达性分析算法(GC-ROOT)进行垃圾对象的识别,对象引用进行标记,没有被标记的对象就是可以回收的。
- 标记清除算法
- 标记整理算法
- 复制算法