【JVM相关】

名词解释

运行时数据区

线程私有
名词解释
虚拟机栈线程开辟的一个栈空间,存放方法运行时所需要的数据称为栈帧
本地方法栈执行调用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 Word8字节,分代年龄,锁状态,hashcode
Class Point8字节(指针压缩,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:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值