Java资源分享网 - 专业的Java学习网站 学Java,上Java资源分享网
JavaGC机制 PDF 下载
发布于:2024-09-13 09:36:52
(假如点击没反应,多刷新两次就OK!)

JavaGC机制 PDF 下载 图1

 

 

资料内容:

 

 

1 什么是 Java GC
在 Java 中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执
行。在 JVM 中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行
的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫描那些没有被任
何引用的对象,并将它们添加到要回收的集合中,进行回收。
 
2 为什么要有 GC
垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存,(垃圾回的原理)垃圾
回收器通常是作为一个单独的低优先级的线程运行,不可预知的情况下对内存堆中
已经死亡的或者长时间没有使用的对象进行清除和回收
 
3 内存泄漏
内存泄漏是指该内存空间使用完毕之后未回收,在不涉及复杂数据结构的一般情况
下,Java 的内存泄漏表现为一个内存对象的生命周期超出了程序需要他的时间长度,
有时也将其称为“对象游离”。
 
4 垃圾回收机制中的算法
4.1 确定垃圾的方式
4.1.1.1 引用计数法
在 Java 中,引用和对象是有关联的,如果要操作对象需要通过引用
进行,一个对象如果没有任何关联的引用,不太可能再被使用,说
明对象是可回收对象,但是引用计数法会有循环引用问题。
4.1.1.2 可达性分析
为了解决引用计数法的循环引用问题,Java 使用了可达性分析方法,
通过 GC Roots 根节点开始向下搜索
当 GC Roots 与一个对象没有可达路径,则认为该对象是不可达对
象,不可达对象变成可回收对象的条件是要经过 2 次标记以上后都
是不可达对象,才会面临着回收。
4.2 任何一种垃圾回收算法一般要做两件基本的事情:(1)发现无用信息对象;
(2)回收被无用对象占用的内存空间,是该空间可被程序再次使用。
4.3 标记清除算法
4.3.1.1 标记清除算法,包含“标记”和“清除”两个阶段:首先标记出所有需
要回收的对象,在标记完成后统一回收掉所有被标记的对象
4.3.1.2 主要缺点:执行完标记清理之后,由于将垃圾对象回收掉了,所以
原本连续使用的内存块便会变得不连续,这样会导致内存块上面会
出现很多小单元的内存区域,这些小单元的内存区域只能够存放比
较小的对象,而较大的对象是无法直接存储的。
4.4 标记整理算法
4.4.1.1 标记过程与标记清理算法一样,但是后续步骤和标记清理算法不一
样,该算法是将所有存活的对象向一端移动,然后将端边界以外的
内存全部清理掉
4.4.1.2 老年代采用标记整理算法,因为老年代每次 GC 的时候都只有少量
的对象需要被回收