Java程序到底是如何运行的?如何写出更高效的Java代码?

前言

Java程序到底是如何运行的?如何写出更高效的Java代码....?这些问题归根结底都要从JVM中去寻找答案。

我不知道Java 还能走多远,未来是否会被淘汰,但你不能因此就否定研究JVM的意义。JVM作为一款虚拟机,各种底层技术和理论都有涉及,若你能研究透彻,则能一通百通。

文明需要创造,也需要传承。JVM作为一款虚拟机,本身便是技术之集大成者,里面包含得广大技术爱好者深人研究。可以说,从最新的硬件特性,到最新的软件技术,只要技术被证明是成熟的,都会在JVM里面见到其踪影。JDK的每- -次更新,从内部到核心类库,JVM都会及时引入这些最新的技术或者算法,这便是技术传承意义之所在。

本书是一本通过深入结合HotSpot源代码来解释Java虚拟机工作机理的书籍。这是一本优秀的技术工具书,可以让阅读者更加深刻地理解虚拟机的原理和细节,值得每位具有极客精神、追求细节的优秀程序员反复阅读和收藏。

思维导图

Java程序到底是如何运行的?如何写出更高效的Java代码?

目录

本书从源码角度解读HotSpot的内部实现机制,本版本主要包含三大部分一JVM数据结构设计 与实现、执行引擎机制及内存分配模型。本书通过直接对源代码的分析,从根本上梳理和澄清Java领域中的关键概念和机制。

第1章 Java虚拟机概述

  • 1.1 从机器语言到Java——詹爷,你好
  • 1.2 兼容的选择:一场生产力的革命
  • 1.3 中间语言翻译
  • 1.4 神奇的指令

Java程序到底是如何运行的?如何写出更高效的Java代码?

Java程序到底是如何运行的?如何写出更高效的Java代码?

第2章 Java执行引擎工作原理:方法调用

  • 2.1 方法调用
  • 2.2 JVM的函数调用机制
  • 2.3 函数指针
  • 2.4 CallStub函数指针定义
  • 2.5 _call_stub_entry例程

Java程序到底是如何运行的?如何写出更高效的Java代码?

Java程序到底是如何运行的?如何写出更高效的Java代码?

第3章 Java数据结构与面向对象

  • 3.1 从Java算法到数据结构
  • 3.2 数据类型简史
  • 3.3 Java数据结构之偶然性
  • 3.4 Java类型识别
  • 3.5 大端与小端

Java程序到底是如何运行的?如何写出更高效的Java代码?

Java程序到底是如何运行的?如何写出更高效的Java代码?

第4章 Java字节码实战

  • 4.1 字节码格式初探
  • 4.2 魔数与版本
  • 4.3 常量池
  • 4.4 访问标识与继承信息
  • 4.5 字段信息
  • 4.6 方法信息

Java程序到底是如何运行的?如何写出更高效的Java代码?

Java程序到底是如何运行的?如何写出更高效的Java代码?

第5章 常量池解析

  • 5.1 常量池内存分配
  • 5.2 oop-klass模型
  • 5.3 常量池klass模型(1)
  • 5.4 常量池klass模型(2)
  • 5.5 常量池解析

Java程序到底是如何运行的?如何写出更高效的Java代码?

Java程序到底是如何运行的?如何写出更高效的Java代码?

需要领取这份阿里大佬整理的《JVM设计原理与实现》的麻烦点赞小编这篇文章,点个关注然后私信我【JVM】即可。

第6章 类变量解析

  • 6.1 类变量解析
  • 6.2 偏移量
  • 6.3 从源码看字段继承

Java程序到底是如何运行的?如何写出更高效的Java代码?

Java程序到底是如何运行的?如何写出更高效的Java代码?

第7章 Java栈帧

  • 7.1 entry_point例程生成
  • 7.2 局部变量表创建
  • 7.3 堆栈与栈帧
  • 7.4 JVM的栈帧
  • 7.5 栈帧深度与slot复用
  • 7.6 最大操作数栈与操作数栈复用

Java程序到底是如何运行的?如何写出更高效的Java代码?

Java程序到底是如何运行的?如何写出更高效的Java代码?

第8章 类方法解析

8.1 方法签名解析与校验

8.2 方法属性解析

8.3 创建methodOop

8.4 Java方法属性复制

8.5 <clinit>与<init>

8.6 查看运行时字节码指令

8.7 vtable

Java程序到底是如何运行的?如何写出更高效的Java代码?

Java程序到底是如何运行的?如何写出更高效的Java代码?

第9章 执行引擎

  • 9.1 执行引擎概述
  • 9.2 取指
  • 9.3 译码
  • 9.4 栈顶缓存
  • 9.5 栈式指令集
  • 9.6 操作数栈在哪里
  • 9.7 栈帧重叠
  • 9.8 entry_point例程机器指令
  • 9.9 执行引擎实战
  • 9.10 字节码指令实现

Java程序到底是如何运行的?如何写出更高效的Java代码?

Java程序到底是如何运行的?如何写出更高效的Java代码?

第10章 类的生命周期

  • 10.1 类的生命周期概述
  • 10.2 类加载
  • 10.3 类的初始化
  • 10.4 类加载器
  • 10.5 类实例分配

Java程序到底是如何运行的?如何写出更高效的Java代码?

 

Java程序到底是如何运行的?如何写出更高效的Java代码?

 

JVM涉及的知识面十分广阔,因此限于篇幅,本书并未覆盖JVM的全部内容。

总体而言,本书重点描述了JVM从启动开始到完成函数执行的详细机制,读完本书,相信你一定能够

明白JVM执行Java程序的底层机制,能够明白JVM将Java语言-步步转换为CPU可执行的机器码的

内部机制,以及为此而制定的各种规范的实现之道。

需要领取这份阿里大佬整理的《JVM设计原理与实现》的麻烦点赞小编这篇文章,点个关注然后私信我【JVM】即可。