![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
yisish
知行合一
展开
-
早期(编译器)优化
编译过程大致分为3个步骤,分别是:解析与填充符号表过程插入式注解处理器的注解处理过程分析与字节码生成过程解析与填充符号表解析主要包括词法分析和语法分析两个步骤词法分析将源代码的字符流转变为标记集合,单个字符是程序编写过程的最小元素,而标记则是编译过程中最小元素,关键字,变量名,字面量,运算符都可以成为一个标记(Token)语法分析是根据Token序列构造抽象语法树的过程,抽象语法树...原创 2019-05-20 12:11:32 · 274 阅读 · 0 评论 -
晚期(运行期)优化
概述Java程序最初通过解释器进行解释执行,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为"热点代码",为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器(JIT编译器)为何HotSpot 虚拟机要使用解释器和编译器并存的架构为何HotSpot 虚拟机要实现两个不同的即时编译器程...原创 2019-05-20 15:14:46 · 87 阅读 · 0 评论 -
垃圾收集器与内存分配策略
概述在 Java 运行时,其中程序计数器,虚拟机栈,本地方法栈3个区域随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而执行着出栈入栈的操作,每一个栈帧中分配多少内存基本是在类结构确定下来就已知了,因此这几个区域的内存分配和回收都具备确定性,在这几个区域内不需要过多考虑回收问题,因为方法结束或者线程结束时,内存自然就跟着回收了,而 Java 堆和方法区则不一样,一个接口中的多个实现类需要的...原创 2019-06-12 15:02:44 · 140 阅读 · 0 评论