JVM简要梳理

JVM简要梳理,第1张

JVM简要梳理 整体流程

class生命周期


装载:

全盘负责:当前类及其所依赖、引用的类一并加载父类委托:双亲委派。loadClass()–findClass()–loadClassData()–defineClass(),自定义的话就复写findClass()缓存机制:优先从缓存取,缓存没有再加载解析

验证:
文件格式验证
语法验证

准备:
静态变量初始化零值
常量初始化赋值

解析:
符号引用转换为直接引用
初始化:

时机
主动按需加载顺序
先父类后子类,先静态后实例

对象内存结构:

对象头
mark world:哈希码、分代年龄、锁状态标记
class pointer:class指针
length:数组长度实例数据:不同数据类型长度不同对齐填充:保证为8字节整数倍

垃圾回收

引用计数
循环引用问题可达性分析
GC ROOT:栈帧中局部变量表、方法区中静态变量及常量、本地方法栈中JNI元素finalize()
只执行一次,如果执行过程中对象再次被强引用,则该对象不会被回收标记清除
效率低,空间碎片标记整理
效率低,没有碎片
整理顺序:任意顺序(双指针)、线性顺序、滑动顺序(lisp、lisp2)标记复制
效率高,没有碎片,浪费一半空间

引用类型:

强引用
不回收软引用
内存不足、超时回收弱引用
直接回收虚引用 JVM参数


线程内存与主存同步数据:
read—load—use—assign—lock—store—write—unlock

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5718370.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存