JVM读书笔记
文章平均质量分 79
wuqingdeqing
生如逐放 心有焰藏
展开
-
JVM读书笔记(四)——类加载机制
4.1 概述虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。4.2 时机4.3 过程4.3.1 加载加载是“类加载”的一个过程。虚拟机需要完成3件事:1.通过一个类的全限定名来获取此类的二进制字节流。2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。3.在内存中生成一个代表这个...原创 2018-04-07 21:40:31 · 126 阅读 · 0 评论 -
JVM读书笔记(五)——虚拟机字节码执行引擎
5.1 概述在Java虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,这个概念模型成为各种虚拟机执行引擎的统一外观。在不同的虚拟机实现里面,执行引擎在执行Java代码的时候可能会有解释执行和编译执行两种选择,也可能两者兼备,甚至还可能会包含几个不同级别的编译器执行引擎。但从外观上看,所有的Java虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。5...原创 2018-04-15 23:48:29 · 181 阅读 · 0 评论 -
JVM读书笔记(六)——早期(编译期)优化
6.1 概述Java语言的编译期实际上是一段不确定的操作过程,因为它可能是指一个编译器的前端把*.java转变成*.class文件的过程,也可能是虚拟机的后端运行期的编译器(JIT编译器)把字节码转变成机器码的过程,还可能是指使用静态提前编译器直接把*.java文件编译成本地机器代码的过程。其中最符合大家对Java程序编译认知的应是第一种,本文所将的编译期和编译器都仅限第一种。6.2 Javac编...原创 2018-04-16 18:55:01 · 182 阅读 · 0 评论 -
JVM读书笔记(一)——Java内存区域与内存溢出
1.1 运行时数据区域图片来自于深入理解JVM1.1.1 程序计数器程序计数器时一个较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器的工作就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。1.1.2 虚拟机栈与程序计数器一样,Java虚拟机栈也是线程私有的,它的生命...原创 2018-04-05 14:26:11 · 162 阅读 · 0 评论 -
JVM读书笔记(二)——GC与内存分配策略
2.1 概述Java运行时的内存中,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生灭;栈帧随着方法的进入和退出执行出战和入栈操作。每一个栈帧分配多少内存基本上是类结构确定下来就已知的,因此在这几个区域不需多考虑回收问题。而Java堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,我们只有在程序运行时期才知道会创建哪些对象,这部分内存...原创 2018-04-06 10:04:04 · 298 阅读 · 2 评论 -
JVM读书笔记(三)——Class文件结构
3.1 无关性的基石实现语言无关性的基石是虚拟机和字节码的存储格式。JVM不和包括Java在内的任何语言绑定,它只与Class文件这种特定的二进制文件格式所关联,Class文件中包含了JVM指令集和符号表以及其他若干辅助信息。基于安全方面的考虑,JVM规范要求在Class文件中使用许多强制性的语法和结构化约束,但任何一门功能性的语言都可以表示成一个能被Java虚拟机所接受的有效的Class文件。3...原创 2018-04-06 13:57:07 · 163 阅读 · 0 评论