深入理解java虚拟机第二版文字版本-带目录.PDF--下载地址
链接: https://pan.baidu.com/s/1gNEo1gn4iyl48UkPpmaRyA
http://note.youdao.com/noteshare?id=4fd1b05c58f5b9ea2b847144e41fe33c
- 1. 走进Java
- 2. Java内存区域与内存溢出异常
- 2.1 运行时数据区
- 2.3 HotSpot虚拟机对象探秘
- 2.3.1 对象创建
- 2.3.2 对象的内存布局
- 2.3.3 对象的访问定位
- 3. 垃圾收集器与内存分配策略
- 3.1-3.5详见:G1GC垃圾收集器详解及参数调优
- 3.6 内存分配与回收策略
- 4. 虚拟机性能监控与故障处理工具
- 4.1 详见:JVM tools
- 5. 调优案例
- 5.3 Eclipse调优
- 6.类文件结构
- 7. 虚拟机类加载机制
- 7.3 类加载过程
- 7.3.1 加载
- 7.3.2 验证
- 7.3.3 准备
- 7.3.4 解析
- 7.3.5 初始化
- 7.4 类加载器
- 7.4.1 类与类加载器
- 7.4.2 双亲委派模型
- 8.虚拟机字节码执行引擎
- 8.2 运行时栈帧结构
- 8.2.1 动态连接
- 8.3 方法调用
- 8.3.1 解析
- 8.3.2 分派
- Java虚拟机是如何根据实际类型来分派方法执行版本的呢,通过javap -v输出字节码:
- invokevirtual指令的运行时解析过程大致分为以下几个步骤:
- 8.4 基于栈的字节码解释执行引擎
- 9. 类加载及执行子系统的案例与实战
- 9.2.3 字节码技术与动态代理
- 10. 早期(编译器)优化
- 10.3 Java语法糖
- 10.3.1 泛型与类型擦除
- 10.3.2 自动装箱、拆箱与遍历循环
- 10.3.3 条件编译
- 11. 晚期(运行期)优化
- 11.2 HotSpot及时编译器
- 11.2.1 解释器与编译器
- 11.2.2 编译对象与触发条件
- 11.3 编译优化技术
- 11.3.1 优化技术概览
- 11.3.2 公共子表达式消除
- 11.3.3 数组边界检查消除
- 11.3.4 方法内联
- 11.3.5 逃逸分析
- 11.4 Java与C/C++编译器对比
- 12. Java内存模型与线程
- 12.3 Java内存模型
- 12.3.1 主内存与工作内存
- 12.3.2 内存间交互操作
- 13.3.3 volatile
- 13.3.5 原子性、可见性与有序性
- 12.3.6 先行发生原则
- 12.4 Java与线程
- 12.4.1 线程的实现
- 12.4.2 Java线程调度
- 12.4.3 状态转换
- 13. 线程安全与锁优化
- 13.2 线程安全
- 13.2.2 线程安全的实现方法
- 13.3 锁优化
- 13.3.1 自旋锁与自适应自旋所
- 13.3.2 锁消除
- 13.3.3 锁粗化
- 13.3.4 轻量级锁