1. 《深入理解java虚拟机》学习目录

1. 《深入理解java虚拟机》学习目录

背景

这本书是周志明基于jdk1.7编写的,有些概念有点过时了

源代码: github.com/zlserver/jv…

其他参考附录:

  • hashmap: www.jianshu.com/p/8324a3457…
  • idea内存泄漏、溢出分析工具JProfiler: blog.csdn.net/qq_22194659…
  • JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)www.cnblogs.com/dennyzhangd…

目录

一、简介

  1. java虚拟机简介
    • java虚拟机的发展历程
    • java虚拟机编译实战

二、自动内存管理机制

  1. 内存管理
    • 运行时数据区域
      • 程序计数器
      • java虚拟机栈
      • 本地方法
      • java堆
      • 方法区
      • 运行时常量池
      • 直接内存
    • HotSpot虚拟机
      • 对象的创建过程
      • 对象的内存布局
      • 对象的访问定位
    • 堆栈溢出
      • java堆溢出
      • 虚拟机栈和本地方法栈溢出
      • 方法区和运行时常量池溢出
      • 本机直接内存溢出
  2. 垃圾回收器和内存分配策略
    • 垃圾回收基础
      • 引用计数法
      • 可达性分析算法
      • 对象引用的模式
      • 对象死亡判断方法
      • 回收方法区
    • 垃圾回收算法
      • 标记-清除算法
      • 复制算法
      • 标记-整理算法
      • 分代收集算法
      • 算法之间如何权衡
    • HotSpot算法实现
      • 枚举根节点
      • 安全点
      • 安全区域
    • 垃圾回收器
      • Serial收集器
      • ParNew收集器
      • Parallel Scavenge 收集器
      • Serial Old收集器
      • Parallel Old收集器
      • CMS 收集器
      • G1 收集器
      • GC日志分析
      • 垃圾回收参数设置总结
    • 内存分配与回收策略
      • 对象优先在Eden分配
      • 大对象直接进入老年代
      • 长期存活的对象将进入老年代
      • 动态对象年龄判定
      • 空间分配担保
  3. 虚拟机性能监控和故障处理工具
    • JDK命令行工具
      • jps:虚拟机进程状况工具
      • jstat:虚拟机统计信息监视工具
      • jinfo:java配置信息工具
      • jmap:java内存映射工具
      • jhat:虚拟机堆转储快照分析工具
      • jstack:java堆栈跟踪工具
      • HSDIS:JIT生成代码反汇编
    • JDK可视化工具
      • JConsole:Java监视与管理控制
      • VisualVM:多合一故障处理工具
  4. JVM调优案例分析与实战
    • 案例分析
    • Eclipse运行速度调优

三、虚拟机执行系统

  1. Class文件结构
    • 概述
    • 结构分析
      • 魔数与Class文件的版本
      • 常量池
      • 访问标志
      • 类索引、父类索引、接口索引集合
      • 字段表集合
      • 方法表集合
      • 属性表集合
    • 字节码指令
      • 字节码与数据类型
      • 加载和存储指令
      • 运算指令
      • 类型转换指令
      • 对象创建与访问指令
      • 操作数栈管理指令
      • 控制转移指令
      • 方法调用和返回指令
      • 异常处理指令
      • 同步指令
      • 公有设计和私有实现
      • Class文件结构发展历程
  2. 虚拟机Class加载机制
    • 概述
    • 类加载的时机
    • 类加载的过程
      • 加载
      • 验证
      • 准备
      • 解析
      • 初始化
    • 类加载器(ClassLoader)
      • Class和ClassLoader
      • 双亲委派模型
      • 破坏双亲委派模型
  3. JVM字节码执行引擎
    • 概述
    • 运行时栈帧结构
      • 局部变量栈
      • 操作数栈
      • 动态连接
      • 方法返回地址
      • 附加信息
    • 方法调用
      • 解析
      • 分派
      • 动态类型语言
    • 基于栈的字节码解释执行引擎
      • 解释执行
      • 基于栈的指令集与基于寄存器的指令集
      • 基于栈的解释器执行过程
  4. 类加载及执行子系统案例与实战
    • 案例
      • Tomcat
      • OSGI
    • 字节码生成技术与动态代理的实现
    • 自己实现远程执行功能

四、程序编译与代码优化

  1. 编译器优化
  • Javac编译器
    • Javac源码与调试
    • 解析与填充符合表
    • 注解处理器
    • 语义分析与字节码生成
  • Java语法糖
    • 泛型与类型擦除
    • 自动装箱、拆箱与遍历循环
    • 条件编译
  • 实战:插入式注解处理器(自己写一个注解)
  1. 运行期优化
  • HotSpot虚拟机内的即时编译器
    • 解释器与编译器
    • 编译对象与触发条件
    • 编译过程
    • 查看及分析即时编译结果
  • 编译优化技术
    • 公共子表达式消除
    • 数组边界检查消除
    • 方法内联
    • 逃逸分析
  • Java与C/C++编译器对比

五、 高效并发

  1. Java内存模型与线程
  • 硬件效率、一致性
  • Java内存模型
    • 主内存与工作内存
    • 内存交互操作
    • volatile内存语义分析
    • 对long\duble变量特殊规则
    • 原子性、可见性、有序性
    • happen-before原则
  • java线程
    • 线程实现
    • 线程调度
    • 线程状态转换
  1. 线程安全与锁
  • 线程安全
    • 线程安全定义
    • 线程安全的实现
  • 锁优化
    • 自旋锁
    • 锁消除
    • 锁粗化
    • 轻量级锁
    • 偏向锁
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部