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