甜野猫|清华大佬力荐的JVM学习路线+实战笔记+阿里真题,吃透吊打面试官( 三 )


甜野猫|清华大佬力荐的JVM学习路线+实战笔记+阿里真题,吃透吊打面试官第4章:Java字节码实战本章以一个具体的Java程序为例 , 分析了其对应的字节码文件中的数据 。 可以发现 , Java编译器在生成Javaclass字节码文件时 , 全是按套路出牌的 , 那么我们在分析时也按照套路走 , 便不难理解字节码文件的内容 。
字节码文件中最重要的是Java方法所对应的字节码指令( 至少笔者这么认为), Java 源程序的逻辑都封装在字节码指令中 。 对字节码指令在字节码文件中的存储方式有了透彻的理解 , 便意味着你对JVM执行引擎入门了 。
章节简介

  • 字节码格式初探
  • 魔数与版本
  • 常量池的基本结构
  • JVM所定义的11种常量
  • 常量池元素的复合结构
  • 常量池的结束位置
  • 访问标识与继承信息
  • 字段信息
  • 方法信息

甜野猫|清华大佬力荐的JVM学习路线+实战笔记+阿里真题,吃透吊打面试官第5章:常量池解析本章详细分析了解析Java字节码常量池的原理 , 描述了JVM内部常量池对象的内存分配机制 , 并由此阐述了JVM内部的对象表示机制——oop-klass 模型 。 想要研究JVM内核的道友应当认真阅读本章,最好能够非常熟悉常量池的内存分配机制 , 因为后续章节会讲解Java字段、方法的内存分配机制 , 而Java字段和方法的内存分配机制基本与常量池的内存分配机制类似 , 因此对常量池的内存分配机制理解得越透彻,则后续理解其他对象的内存分配机制便会越轻松 。
章节简介
  • 常量池内存分配总体链路.
  • 内存分配
  • 初始化内存
  • oop-klass模型
  • 常量池klass模型(1)
  • 常量池klass模型(2)
  • constantPoolOop域
  • 初始化tag
  • 解析常量池元素

甜野猫|清华大佬力荐的JVM学习路线+实战笔记+阿里真题,吃透吊打面试官第6章:类变量解析总体而言 , HotSpot 解析Java类变量的脉络比较清晰 , 但是也可以看出花了很多心思 , 这导致JVM虽然在执行引擎上相比于那些直接编译成本地机器码的编程语言可能要稍逊一筹, 但是在对象的内存分配上,并不比这些编程语言多浪费一点空间(除了每个Java类对象必须保留一个对象头) , 甚至由于字段重排的优化策略 , 对内存的利用率还要高于这些编程语言的编译器的分配算法 。
章节简介
  • 类变量解析
  • 静态变量偏移量
  • 非静态变量偏移量
  • Java字段内存分配总结
  • 字段重排与补白
  • private字段可被继承吗
  • 使用HSDB验证字段分配与继承
  • 引用类型变量内存分配

甜野猫|清华大佬力荐的JVM学习路线+实战笔记+阿里真题,吃透吊打面试官第7章:Java栈帧本章全面分析了Java方法栈帧创建的过程 , 机器指令几乎是逐个讲解的 。 然而 , 笔者在阅读JVM的这部分机制指令的过程中 , 不仅仅停留于分析机器指令本身的含义 , 还进行了更深入的思考 , 仔细推敲了每一条机器指令的背景 , 为何要这么实现 , 如果不这么实现有没有问题 , 相信真正有耐心读下来并且能够读懂的道友能够体会笔者的这种深人思考!
章节简介