jvm
文章平均质量分 73
过街的老鼠
耽误太多时间,事情可就做不完了。
展开
-
并发的可达性分析(三色标记法)
当前主流编程语言的垃圾收集器基本上都是依靠可达性分析算法来判定对象 是否存活的,可达性分析算法理论上要求全过程都基于一个能保障一致性的快照中才能够进行分析, 这意味着必须全程冻结用户线程的运行。为了减少冻结用户线程的影响,提高效率,采用并发标记的方法并发标记的作用根据 可达性分析算法 的核心概念,利用系列根对象(GC Roots )作为起始点,根据对象之间的引用关系搜索出一条引用链,通过遍历引用链来判断对象的是否存活。在这个过程中,根对象枚举的时间非常短暂且相对固定,然而,遍历所有引用链(对原创 2022-04-22 18:05:19 · 295 阅读 · 0 评论 -
Java虚拟机垃圾回收
垃圾收集器概述垃圾收集器是垃圾回收算法(标记-清除算法、复制算法、标记-整理算法)的具体实现,不同商家、不同版本的JVM所提供的垃圾收集器可能会有很在差别,本文主要介绍HotSpot虚拟机中的垃圾收集器。各款经典收集器之间的关系如果两个收集器之间存在连线,就说明它们可以搭配使用,图中收集器所处的区域,则表示它是属于新生代收集器抑或是老年代收集器。新生代收集器:Serial、ParNew、Parallel Scavenge;老年代收集器:Serial Old、Parallel Old原创 2022-03-15 11:36:48 · 1572 阅读 · 0 评论 -
三种标记垃圾回收算法(JVM)
1.标记-清除算法最早出现也是最基础的垃圾收集算法是“标记-清除”(Mark-Sweep)算法算法分为“标记”和“清除”两个阶段:首先标记出所有需要回 收的对象,在标记完成后,统一回收掉所有被标记的对象,也可以反过来,标记存活的对象,统一回 收所有未被标记的对象。标记过程就是对象是否属于垃圾的判定过程之所以是最基础的收集算法,是因为后续的收集算法大部分是以标记-清除算法为基础,对其缺点进行改进而得到的。他的主要缺点有两个:标记-清除算法的缺点:1.执行效率不稳定如果Java堆中包含原创 2022-03-14 20:59:02 · 1968 阅读 · 0 评论 -
分代收集理论(JVM)
当前商业虚拟机的垃圾收集器,大多数都遵循了“分代收集”的理论进行设计,建立在两个分代假说基础之上:1)弱分代假说(Weak Generational Hypothesis):绝大多数对象都是朝生夕灭的。2)强分代假说(Strong Generational Hypothesis):熬过越多次垃圾收集过程的对象就越难以消亡。这两个分代假说共同奠定了多款常用的垃圾收集器的一致的设计原则:收集器应该将Java堆划分 出不同的区域,然后将回收对象依据其年龄(年龄即对象熬过垃圾收集过程的次数)分配到不同的原创 2022-03-14 16:29:59 · 1111 阅读 · 0 评论 -
java中对象的创建过程
Java是一门面向对象的编程语言,Java程序运行过程中无时无刻都有对象被创建出来。在语言层面 上,创建对象通常仅仅是一个new关键字而已,而在虚拟机中,对象的创建又是怎样一个过程呢?类的加载检查检查当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到 一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那 必须先执行相应的类加载过程。在类加载时,静态成员变量加载到方法区的静态区域,非静态成员变量加载到方法区的非静态区域。原创 2022-03-13 22:50:11 · 1470 阅读 · 0 评论