学而不思则罔,思而不学则殆。 —— 孔子
微信公众号已开启,菜农曰,没关注的同学们记得关注哦!
本篇带来的是周志明老师编写的《深入理解Java虚拟机:JVM高级特性与最佳实践》,十分硬核!
全书共分为 5 部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM工作原理。
全书整体5个部分,十三章,共 358929 字。整体结构相当清晰,以至于写读书笔记的时候无从摘抄(甚至想把全书复述一遍),以下是全书第三部分的内容,望读者细细品尝!
一、第三部分 虚拟机执行子系统
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步
第六章 类文件结构
计算机只认识 0 和 1,所以我们写的程序需要经编译器翻译成由 0 和 1 构成的二进制格式才能由计算机执行。
1)无关性的基石
各种不同平台的虚拟机与所有平台都统一使用的程序存储格式 — 字节码(ByteCode)是构成平台无关性的即时。
2)Class类文件的结构
任何一个Class 文件都对应着唯一一个类或接口的定义信息,但反过来,类或接口并不一定都得定义在文件里(譬如类或接口也可以通过类加载器直接生成)
Class 文件是一组以 8 位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在 Class 文件之中,中间没有任何分隔符,这使得整个 Class 文件中存储的内容几乎全部是程序运行的必要数据。
Class 文件格式采用一种类似C语言结构体的伪结构来存储数据,这种伪结构中只有两种数据类型:
- 无符号数 :基本的数据类型,可以用来描述数字、索引引用、数量值或者按照UTF-8编码构成字符串值
- 表:由多个无符号数或者其他表作为数据项构成的复合数据类型,所有表都习惯性地以
_info
结尾。