JVM篇
JVM内存模型
共享内存
虚拟机栈
java方法,存放局部变量
栈桢,每个方法从调用到运行结束的过程,对应一个栈桢从压栈到出栈
局部变量表
操作数栈
本地方法栈
native方法
程序计数器
唯一一个不会OOM的区域
当前线程执行字节码的行号指示器,确保上下文切换后能恢复到正确位置
私有内存
堆
new出来的对象
方法区
1.8 元空间
静态变量、常量、类信息、运行时常量池
JVM垃圾回收
回收堆内存
确认垃圾
引用计数法
对象是否有被引用,引用+1,失去引用-1,对象引用数为0,表示对象可被回收
缺点:存在循环依赖
可达性分析
选取GCRoots作为根节点,对象到根节点不可达,表示可被回收
GCRoots:
- 虚拟机栈中局部变量表
- 本地方法栈中native方法
- 方法区中类静态属性
- 方法区中常量