Java虚拟机
文章平均质量分 80
godmanHa
这个作者很懒,什么都没留下…
展开
-
深入理解Java虚拟机笔记--运行时数据区域
运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(Java SE 7版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图所示: 程序计数器 程序计数器(...原创 2018-09-09 12:38:35 · 188 阅读 · 0 评论 -
深入理解Java虚拟机笔记--HotSpot算法实现
枚举根节点 从可达性分析中从GC Roots节点找引用链这个操作为例,可作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表)中,现在很多应用仅仅方法区就有数百兆,如果要逐个检查这里面的引用,那么必然会消耗很多时间。  ...原创 2018-09-23 10:59:25 · 151 阅读 · 0 评论 -
深入理解Java虚拟机笔记--内存分配规则
内存分配规则 通过在Client模式(也就是采用Serial/SerialOld收集器)下讲解几条最普遍的内存分配规则。 对象优先在Eden区分配:在大多数情况下,对象都在Eden区进行分配。当Eden区没有足够的空间进行分配时将发起一次Minor GC。 大对象直接进入老年代:所谓的大对象是指需要连...原创 2018-09-23 13:25:00 · 171 阅读 · 0 评论 -
深入理解Java虚拟机笔记--类加载的时机
类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verfivation)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中验证、准备、解析3个部分统称为连接(Linking)。这7个阶段的发生顺序如下图所示: 加载、验证、准备、初始...原创 2018-09-23 15:04:24 · 132 阅读 · 0 评论 -
深入理解Java虚拟机笔记--虚拟机中对象的创建
深入理解Java虚拟机笔记–虚拟机中对象的创建        &原创 2018-09-22 11:45:40 · 136 阅读 · 0 评论 -
深入理解Java虚拟机笔记--对象的内存布局和访问定位
对象的内存布局         在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域**:对象头(Header)**、实例数据(Instance Data)和对齐填充(Padding)。    &原创 2018-09-22 13:55:20 · 347 阅读 · 0 评论 -
深入理解Java虚拟机笔记--对象是否已死
对象是否已死 Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭:栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会有JIT编译器进行一些优化,但是在基于概念模型的讨...原创 2018-09-22 16:53:18 · 145 阅读 · 0 评论 -
深入理解Java虚拟机笔记--垃圾收集算法
标记–清除算法 最基础的算法是“标记–清除”算法,如同它的名字一样,算法分为标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其不足进行改进而得到的。它的主要不足有两个:一个是效率问题,标记和清除...原创 2018-09-22 18:29:50 · 150 阅读 · 0 评论