概述 引用计数法又是什么鬼呢? 顾名思义, 对对象的引用进行计数. 通过记录每个对象被引用的次数, 来确定这个对象是否可以被回收. 实现 首先, 对对象的引用数量进行管理, 什么时候会更新呢? 1. 创建对象: 新建一个对象(对这个新的对象引用数量+1) 2. 更新指针: 将一个指向A对象的指针重新 ...
分类:
编程语言 时间:
2020-04-05 20:42:09
阅读次数:
89
JVM第二弹GC分代收集算法VS分区收集算法分代收集算法当前主流的VM垃圾收集都采用“分代收集“算法,这种算法会根据对象存活周期的不同将内存划分为几块,如JVM中的新生代、老年代、永久代,这样就可以根据个年代特点分别采用最适当的GC算法。新生代·复制算法每次垃圾收集都能发现大批对象已死,只有少量存活。因此选用复制算法,只需要付出少量存活对象的复制成本就可以完成收集。老年代·标记整理算法因为对象存活
分类:
其他好文 时间:
2020-02-05 18:12:19
阅读次数:
71
一、什么是GC GC是jvm的垃圾回收,垃圾回收的规律和原则为: 次数上频繁收集新生区(Young) 次数上较少收集养老区(Old) 基本上不动永久区(Perm) 二、GC算法(分代收集算法) GC总共有四大算法,分别是: ①引用计数法 ②复制算法(Copying) ③标记清除(Mark Sweep ...
分类:
编程语言 时间:
2020-01-20 19:03:24
阅读次数:
107
其他收集器的工作范围是整个新生代或者老年代、G1收集器的工作范围是整个Java堆。在使用G1收集器时,它将整个Java堆划分为多个大小相等的独立区域(Region)。虽然也保留了新生代、老年代的概念,但新生代和老年代不再是相互隔离的,他们都是一部分Region(不需要连续)的集合。 ...
分类:
编程语言 时间:
2020-01-12 15:17:29
阅读次数:
91
该算法是标记清除和标记整理的结合,标记-清除会产生碎片,标记-整理每次都进行整理效率不高;标记-清楚-整理 是如果老年代内存中没有一块连续续的空间可以存放将要进入对象,就进行整理;如果内存中的空间可以存放将要进入的对象,就进行标记-清除,这样就节省了整理的步骤可以提高效率。总结一句话:不是所有的时候... ...
分类:
编程语言 时间:
2020-01-12 11:38:33
阅读次数:
93
Stop-the-World JVM由于要执行GC而停止了应用程序的执行 任何一种GC算法中都会发生 多数GC优化通过减少Stop-the-world发生时间来提高程序性能 Safepoint 分析过程中对象引用关系不会发生变化的点 产生Safepoint的地方: 方法调用; 循环跳转; 异常跳转等 ...
分类:
编程语言 时间:
2020-01-11 20:46:10
阅读次数:
257
3. GC 算法(基础篇) - GC参考手册 https://blog.csdn.net/renfufei/article/details/54407417 翻译铁锚 发布于2017-01-13 12:16:12 阅读数 6061 收藏 展开 相关术语翻译说明: Mark,标记; Sweep,清除; ...
分类:
编程语言 时间:
2020-01-11 10:00:26
阅读次数:
105
四种GC算法 GC垃圾回收,首先需要判断哪些对象需要回收 判断对象存活 可达性分析 : ? 从GC Roots开始向下查询,如果一个对象到任何一个GC Root对象都没有一个引用链相连的话,说明此对象不可用。 ? 四个GC Root对象 1. JVM栈中引用的对象 2. 方法区静态属性引用的对象 3 ...
分类:
编程语言 时间:
2020-01-10 15:52:00
阅读次数:
117
垃圾收集的位置 JVM把内存区域分为多个子区。在这些子区中,程序计数器,虚拟机栈和本地方法栈生命周期与线程绑定,程序计数器始终指向当前执行的字节码位置,或为空,虚拟机栈和本地方法栈则随着方法的执行和结束执行如栈和出栈操作,每一个栈帧的内存大小在类结构确定下来时就为已知的,因此在这些子区中的内存分配和 ...
分类:
其他好文 时间:
2019-12-29 15:01:20
阅读次数:
61
程序在运行过程中,会产生大量的内存垃圾(一些没有引用指向的内存对象都属于内存垃圾,因为这些对象已经无法访问,程序用不了它们了,对程序而言它们已经死亡),为了确保程序运行时的性能,java虚拟机在程序运行的过程中不断地进行自动的垃圾回收(GC)。关于 JVM 的 GC 算法主要有下面四种: 1、引用计 ...
分类:
编程语言 时间:
2019-12-23 20:56:56
阅读次数:
85