☕️Java虚拟机
前言
🍔内存区域
运行时数据区域
程序计数器
Java虚拟机栈
本地方法栈
Java堆
方法区
直接内存
对象的知识
对象的生命周期
对象的内存布局
对象的访问定位
对象大小的计算
🍨垃圾收集器
垃圾收集器
对象存活的判断
回收方法区
垃圾收集算法
标记-清除算法
标记-复制算法
标记-整理算法
算法实现细节
根节点枚举
安全点
安全区域
记忆集与卡表
写屏障
并发可达性分析
垃圾收集器
Serial 收集器
ParNew 收集器
Parallel Scavenge 收集器
Serial Old 收集器
Parallel Old 收集器
CMS 收集器
Garbage First 收集器
🍥虚拟机执行子系统
虚拟机执行子系统
类文件结构
魔数与Class文件的版本
常量池
Class的访问标志、类、父类、接口索引
字段表集合
方法表集合
属性表
Code 属性
Exceptions 属性
ConstantValue 属性
编译后生成的类文件
字节码指令简介
加载和存储指令
运算指令
类型转换指令
对象创建与访问指令
操作数栈管理指令
方法调用和返回指令
同步指令
虚拟机类加载机制
类加载的时机
类加载的过程
加载
验证
准备
解析
初始化
类加载器
双亲委派模型
破坏双亲委派模型
虚拟机字节码执行引擎
运行时栈桢结构
局部变量表
操作数栈
动态连接&方法返回地址&附加信息
方法调用
解析调用
分派调用
🍜程序编译与代码优化
程序编译与代码优化
前端编译与优化
后端编译与优化
即时编译器
编译器优化技术
方法内联
逃逸分析
公共子表达式消除
🥗高效并发
高效并发
Java内存模型与线程
Java内存模型
volatile的特殊规则
long和double的特殊规则
先行发生原则
Java与线程
线程安全与锁优化
线程安全
互斥同步
非阻塞同步
无同步方案
锁优化
自旋锁与自适应自旋
锁消除&锁粗化
轻量级锁
偏向锁
锁的疑问及细节
本书使用 GitBook 发布
线程安全与锁优化
线程安全与锁优化