Chapter3垃圾收集器与内存分配策略
2016-06-03 17:21:16 0 举报
AI智能生成
垃圾收集器和内存分配策略是Java虚拟机中两个重要的组成部分。垃圾收集器负责自动回收不再使用的对象所占用的内存,从而避免了内存泄漏和其他相关问题。而内存分配策略则决定了对象在堆内存中的分配方式,包括如何划分内存区域、如何选择空闲内存块等。常见的垃圾收集器有Serial、Parallel、CMS和G1等,它们各自有不同的优缺点和适用场景。常见的内存分配策略有标记-清除、复制、标记-整理等,它们也各自有不同的特点和优劣势。选择合适的垃圾收集器和内存分配策略可以有效地提高程序的性能和稳定性。
作者其他创作
大纲/内容
对象已死吗?
引用计数算法
可达性分析
通过一系列的称为“GC Root”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Root没有任何引用链相连时,则证明此对象是不可用的
在Java语言中,可作为GC Roots的对象包括下面几种:1、虚拟机栈(栈帧中的本地变量表)中的引用的对象。2、方法区中的类静态属性引用的对象。3、方法区中常量引用的对象。4、本地方法栈中JNI(即一般说的Native方法)引用的对象。
垃圾收集算法
标记-清除算法
分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。
不足:1、效率问题,标记和清除两个过程的效率都不高。2、空间问题,标记清除后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾手机动作。
复制算法
标记-整理算法
分代收集算法
HotSpot的算法实现
枚举根节点(GC Roots)
安全点(Safepoint)
安全区域(Safe Region)
0 条评论
下一页