返回上级
垃圾回收算法
评价标准 1.堆内存使用效率 2.STW时间 3.执行业务代码时间占比 why 1.标记清除: 产生内存碎片, 遍历堆速度慢. 2.标记复制 3.标记压缩 ===== 4.分代GC GC类型指清理类型:会用可达性分析类型 新生代寿命短,复制消耗不高, 因此复制算法 老年代空间大对象多寿命长, 复制成本高 Key: TLAB:线程本地堆
类的生命周期
阶段 加载,连接(验证,准备,解析),初始化, 使用,卸载 加载 1.类加载器获取字节码信息 2.加载完类后, jvm将字节码信息放在方法区(Metaspace/永久代) 3.生成InstanceKlass对象 保存各种信息 4.提供class对象 (便于利用反射) ============== ============== 连接 验证: 1.cafebab
垃圾回收器
组合 parNew 复制多线程 Serial: 复制 SerialOld: 标记整理 CMS: Concurrent 同时发生, 只清除不整理, 因此想要分配对象(连续空间)就得连续空间,需要调用SerialOld帮忙整理出来 执行步骤 吞吐量 && 停顿时间 吞吐量= app/(app+gcTime) G1垃圾回收器: G1 本质是 分区
类加载器
Why Bootstrap 让bootstrap加载自己写的jar包,1.放进lib 2.添加vm参数 Extension : /jre/lib/ext Application: classpath Extension:参数添加,要防止覆盖!! 双亲委派机制:谁来加载类 1.确保加载的安全 2.避免重复 执行: 向上传递,加载过直接返回. 都没加载过(Cla
运行时数据区 - 程序计数器
1.what 记录下一天字节码指令的地址 问
栈
存 slot有限因此复用, {}完即完 Slot
方法区
方法区 存储类的元信息 运行时常量池: 直接通过内存地址访问 符号引用到内存引用 在加载和链接阶段完成 建议
JVM 基础篇拾遗
[方法区的回收](fragment295487e3) [堆](fragment33efa58) [直接内存](fragment5375ad21) [图解](fragment738d21cd) [总结](fragment738e3520)
ShouldKnow
1.InstanceKlass(binary) && Class