随笔分类 - Jvm
学习jvm过程中的一些心得和知识点
摘要:每一个Class都对应着唯一的一个类或借口的定义信息。这里,我们称为"Class文件格式"只是通俗的将任意一个符合有效的类或借口的格式这么称呼,但是它并不一定是以磁盘文件的形式存在。 每个Class文件都是由8字节为单位的字节流组成,所有的16位、32位和64位长度的数据将被构造成 2个、4个和8个8字节单位来表示。ClassFile结构 每一个Class文件对应于一个如下所示的ClassFile结构体。ClassFile { u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_c...
阅读全文
摘要:Java虚拟机通过系列类加载器加载Class文件,然后读取其中的字节码指令进行工作的。而Class文件则是通过Java编译器编译Java源代码得到的,如下图: 理解编译器是如何与Java虚拟机协同工作的,对编译器开发人员来说很有好处,同样也有助于理解Java虚拟机本身。 下面主要介绍的是Java虚拟机规定的编译规则:常量、局部变量的使用和控制结构 Java虚拟机是基于栈架构设计的,它的大多数操作是从当前栈帧的操作数栈取出1个或多个操作数,或将结果压入操作数栈中。每调用一个方法,都会创建一个新的栈帧,并创建对应方法所需的操作数栈和局部变量表 前面已经谈到栈和栈帧的概念,在栈...
阅读全文
摘要:前言 说到学习jvm,其实我本人并不认为学习完以后会对目前工作有什么太大的帮助。但是为了深入了解java体系,使自己在看待问题上能够看到更本质的部分还是必须要学习的。同时对于自己的技术也是一个深入。 闲话少说,这个系列主要是阅读Java虚拟机规范的一些知识点的梳理和心得,后续可能还包括经典的《深入Java虚拟机》一书的系列。 首先提供一下《Java虚拟机规范(Java SE 7)》PDF中文版的下载,这个版本要感谢ITEYE上的几位牛人进行的翻译,不然只能去啃英文版的了。 下载: 《Java虚拟机规范(JavaSE7)》 引用下书里的概括: Java SE 7版的《Java虚拟机...
阅读全文