名词解释
运行时数据区
线程私有
名词 | 解释 |
---|---|
虚拟机栈 | 线程开辟的一个栈空间,存放方法运行时所需要的数据称为栈帧 |
本地方法栈 | 执行调用java native方法的服务 |
程序计数器 | 记录当前线程执行到的字节码行号 |
虚拟机栈:栈帧
名词 | 解释 |
---|---|
局部变量表 | 方法里的局部变量信息 |
操作数栈 | 操作数据的临时空间,会将局部变量表中的数据临时放到操作数栈,然后进行运算操作,最后出栈赋值给局部变量表中去 |
动态链接 | 方法对象的内存地址,通过方法 句柄池 / 直接指针 实现 |
返回地址 | 当前方法执行完回退到上一个方法原来的地方,恢复现场 |
句柄池: 在java堆里面有一个句柄池空间,动态链接指向句柄池,句柄池里有 对象实例数据指针 指向 java堆中的 实例对象数据、对象类型数据指针 指向 方法区 中 对象类型数据
直接指针: 在java堆中有一个 实例对象数据 空间,空间里有一个 对象类型数据指针 指向 方法区 中 对象类型数据
线程共享区域
名词 | 解释 |
---|---|
堆 | 存对象的一块地址空间 |
方法区(元空间) | 运行时常量池、类的相关信息 |
堆:Ful GC
名词 | 解释 |
---|---|
Young(新生代) | 默认占 1/3,主要存储小对象 |
Old(老年代) | 默认占 2/3 ,主要存储大对象和GC年龄超过15(默认GC年龄)的对象 |
新生代:minor GC
名词 | 解释 |
---|---|
Eden | 默认占 8/10,分配小对象,大对象直接分配至老年代 |
From | 默认占 1/10 |
To | 默认占 1/10 |
GC
gc过程: Eden 一次Minor GC后,将存活的对象放到from区,GC年龄变成1。继续分配对象,满了minor gc后,将from和eden区存活的对象放到to区。GC年龄加1,直到一些对象GC年龄达到15次后,将其放到老年代,当老年代也满了之后就会进行Full GC,清理堆中所有对象
gc判断:
引用计数法: 引用对象将对象引用数加1,使用完减1。循环引用将永远无法回收
可达性分析法: GC Root ,根节点使用的不能被清除:虚拟机栈中的本地变量表中的对象;本地方法栈中引用的对象;方法区中的 静态属性引用的变量;常量引用的对象;
堆
对象:
普通对象:Mark Word,Class Point 组成对象头
数组对象:Mark Word,Class Point,长度 组成对象头
名词 | 解释 |
---|---|
Mark Word | 8字节,分代年龄,锁状态,hashcode |
Class Point | 8字节(指针压缩,4字节) |
长度 | 4字节 |
实例数据 | |
对齐 | 64位机器,对齐8的整数倍 |
类加载机制
加载: 将类的二进制信息加载到虚拟机里,方法区:类信息;堆:class对应的类实例 。Classload
链接: 校验:确保加载的类信息是正确的;准备:为类的静态变量进行初始化,分配空间,并赋予初始值;解析:将常量池中的符号引用转为直接引用
初始化: 调用初始化构造器,< Clinit >()方法的过程
类加载器
自定义加载器(CustomerClassLoader): 用户自定义的加载器
系统类加载器(AppClassLoader): user.dir class
标准类扩展加载器(ExtClassLoader): jre、javax、ext
启动类加载器(BootStrapClassLoader): C++编写的 加载java核心库的加载器
垃圾回收算法
标记清除算法:
1、标记可达的对象、
2、清理不可达的对象
缺点:效率低,stw,内存空间碎片化
复制清除算法:
缺点:存活对象效率低,浪费内存,只使用一半空间
标记整理算法:
缺点:整理会有效率问题
分代收集算法:
新生代:复制清除
老年代:标记清除、标记整理
垃圾回收器
serial: 新生代收集器、单线程
serial old: 老年代收集器、单线程
paraller scavenge: 新生代收集器、多线程
paraller old: 老年代收集器、多线程
cms: 老年代
1.初始标记:标记gc root
2.并发标记,并不完整
3.重新标记,stw
4.并发清除
parNew: 新生代:多线程
G1: 将堆分成许多的 区域(Region),整体来看是标记整理,局部来看是复制清除 ,关注停顿时间和高的吞吐量,Young GC,Old GC,在每个Region里会有card table、Remembered set中会存储一个指针指向跨Region的对象
1.Old
2.Eden
3.Survivor
4.Humongous:存放GC后的大对象
ZGC:
Shenandoah: