装载:
全盘负责:当前类及其所依赖、引用的类一并加载父类委托:双亲委派。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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)