JVM将内存划分为五大块区域,不同的GC会针对不同的区域进行垃圾回收,GC类型一般有以下几大类: Minor GC 也被称为“Young GC”、“轻GC”,只针对新生代进行的垃圾回收。 Major GC 也被称为“Old GC”,只针对老年代进行的垃圾回收。 Mixed GC 混合GC,针对新生代和部分老年代进行垃圾回收,部分垃圾收集器才支持。
1:引用计数器算法:(目前不是jdk的垃圾回收算法) 如图: 计数器算法缺点:(两个对象互相引用,垃圾无法回收) 2:可达性分析算法(GC Root) 概念:将"GC Roots" 对象作为起点,从这些节点向下搜索引用的对象,找到对象都标记为非垃圾对象,其余未标记的对象都是垃圾对象GC Roots根节点:线程栈的本地变量、静态变量、本地...
垃圾回收算法有标记清除算法、复制回收算法、标记整理算法、分代回收算法等。 1、标记清除算法 标记清除算法是最基本的算法,分为标记和清楚两个阶段,首先标记出需要GC Root可达的对象,在标记完成后,统一回收掉被没有被标记的对象。 缺点是效率低(标记和清除效率都不高)及存在内存碎片(会产生大量不连续的内存碎片,导...
publicclassFinalization{publicstaticFinalizationf;// 当对象被GC时,会在GC前调用finalize()方法执行@Overrideprotectedvoidfinalize()throwsThrowable{super.finalize();System.out.println("重新与GcRoots建立连接...");// 当执finalize方法时,重新将当前实例复活,让对象变成可触及性的f=this;}@OverridepublicStringtoS...
JVM GC 算法有哪些,目前的 JDK 版本采用什么回收算法? G1 回收器讲下回收过程 GC 是什么?为什么要有 GC? GC 的两种判定方法?CMS 收集器与 G1 收集器的特点 百度 说一下 GC 算法,分代回收说下 垃圾收集策略和算法 天猫 JVM GC 原理,JVM 怎么回收内存 ...
现代JVM一般采用可达性分析算法来进行垃圾回收。 引用详解(重点) 无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象是否引用链可达,判定对象是否存活都和“引用”离不开关系。 在JDK1.2版之前对象只有“被引用”和“未被引用”之分,在其之后进行了扩充,将引用分为了如下四种: ...
Parallel Scavenge的老年代版本,一般它们搭配使用,追求CPU吞吐量。这个收集器是在JDK 1.6中才开始提供的,它们在垃圾收集时都是由多条GC线程并行执行,并暂停一切用户线程,使用"标记-整理"算法。因此,由于在GC过程中没有使垃圾收集和用户线程并行执行,因此它们是追求吞吐量的垃圾收集器。
可达性分析算法(Reachability Analysis)的基本思路是,通过一些被称为引用链(GC Roots)的对象作为起点,从这些节点开始向下搜索,搜索走过的路径被称为(Reference Chain),当一个对象到 GC Roots 没有任何引用链相连时(即从 GC Roots 节点到该节点不可达),则证明该对象是不可用的。在 Java 语言中,可作为 ...
3.4 分代收集算法 3.4.1 年轻代(Young Generation)的回收算法 3.4.2 年老代(Old Generation)的回收算法 3.4.3 持久代(Permanent Generation)的回收算法 四、常见的垃圾收集器 五、GC是什么时候触发的(面试最常见的问题之一) 5.1 Scavenge GC 5.2 Full GC ...