![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 92
一只小小肥羊
这个作者很懒,什么都没留下…
展开
-
JVM | 第三章:垃圾收集器与内存分配策略
1. 哪些内存需要回收? 堆,方法 程序计数器,虚拟机栈,本地方法栈3个区域随线程而生,随线程而灭,内存的回收具有确定性 2. 回收哪些对象? 引用计数法:给对象添加一个引用计数器,每当有一个地方引用它时,计数器就增1,引用失效,减一 (循环引用的问题) 可达性分析算法:通过一系列的称为“GC Roots”的对象作为起点,从这些节点开始向下搜索,搜索走过的路径称为引引用链,当一个对...原创 2018-12-27 17:11:24 · 64 阅读 · 0 评论 -
JVM | 不同内存区域溢出
import java.util.ArrayList; //java堆溢出:不断生成对象,导致堆内存溢出 public class HeapOOM { static class OOMObject { } public static void main(String[] args) { ArrayList<OOMObject> list = ...原创 2019-01-09 17:02:46 · 186 阅读 · 0 评论 -
JVM | 第八章 虚拟机字节码执行引擎
执行引擎是java虚拟机最核心的组合部分之一。“虚拟机”是相对于“物理机”的概念,这两种机器都有执行代码的能力,其区别是物理机的执行引擎是直接建立在处理器,硬件,操作数和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行定义指令集与执行引擎的结构体系,并且能够执行那些不被硬件直接支持的指令集格式。 运行时栈帧结构 栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机...原创 2019-01-15 15:29:16 · 112 阅读 · 0 评论 -
JVM | 第十章&第十一章 程序编译与代码优化
早期(编译期)优化 从Sun Javac代码来看,编译过程大致分为3个过程: 解析与填充符号表过程 插入式注解器的注解处理过程 分析与字节码生成过程 标注检查,数据及控制流分析,解语法糖,字节码生成 语法糖 泛型与类型擦除 自动装箱,拆箱与遍历循环, 条件编译 变长参数 内部类 枚举类 断言语句 try中定义和关闭资源 … 晚期(运行期)优化 java程序最初是通过解释器进行解释执行的,...原创 2019-01-16 11:16:33 · 139 阅读 · 0 评论