深入理解Java虚拟机读书笔记
文章平均质量分 93
wang_cao_ming
这个作者很懒,什么都没留下…
展开
-
第2章 Java内存区域与内存溢出异常
1. 虚拟机运行时数据区域 1.1 Java虚拟机运行时数据区图 注:图中浅蓝色部分为线程共享区, 图中的白色部分为线程私有部分 1.2 线程共享 线程共享部分的所有区的生命周期和所属虚拟机的生命周期是相同的。 1.2.1 方法区 方法区用于存储已经被虚拟机加载的 类信息,常量,静态变量,即时编译器编译后的代码等数据。在JDK1.7之前原创 2016-07-14 19:49:29 · 370 阅读 · 0 评论 -
第3章 垃圾收集器与内存分配策略
1. 判断对象的生死 判断对象的生死由两种方法:1. 引用计数法 2. 可达性分析算法 1.1 引用计数法 引用计数法就是为对象添加一个引用计数器,每当有一个地方引用它时,计数器的值就加1;当引用失效时,计数器就减1;任何时刻计数器为0的对象就是不可能再被使用的。 优点:简单高效 缺点:无法解决对象之间相互循环引用的问题。 因为它的缺点,Java虚拟机没有选用引原创 2016-07-16 21:34:31 · 522 阅读 · 0 评论 -
第7章 虚拟机类加载机制
1. 类的生命周期 类的整个生命周期包括:加载,验证,准备,解析,初始化,使用,卸载7个阶段。如下图所示 其中,加载,验证,准备,初始化,使用这5个阶段是确定的,而解析阶段则不确定,它在某些情况下可以在初始化之后再进行。这是为了支持java的动态绑定特性。 1.1 加载 在加载阶段,虚拟机要完成以下三件事情: 1. 通过一个类的全限定名来获取此类的二进制流 2原创 2016-07-28 14:12:58 · 296 阅读 · 0 评论 -
第八章 虚拟机字节码执行引擎
1. 运行时栈帧结构 栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构 每一个栈帧中存储了方法的局部变量表,操作数栈, 动态连接和方法返回地址。每一个方法调用的开始直至执行完成的过程,都是一个对应的栈帧从入栈到出栈的过程。 在编译程序代码的时候,栈帧中需要多大的局部变量表,多深的操作数栈都已经完全确定了栈帧具体分配多少的内存,取决于具体的虚拟机实现。而不会受到运行时期的数据变化的影响原创 2016-09-16 20:02:42 · 620 阅读 · 0 评论