读了java垃圾回收机制的自我总结后,可能会有错误。 欢迎您的指正
)1)什么是java垃圾回收机制? 垃圾回收机制的要点是什么?
与c/c语言不同,java不需要程序员直接控制内存回收,java程序的内存分配和回收都由jre在后台自动完成。 通常,如果cpu空闲或内存不足,jre将检测未使用的内存并提供循环使用的线程。 这种机制被称为垃圾收集
垃圾回收可以有效防止内存泄漏,有效使用空闲的内存
所有垃圾回收算法通常都要做两件基本的事情:
1 )找到无用的对象
2 )回收无用对象占用的内存区域
)2)如何判断内存中的哪个对象是垃圾?
引用计数法
1 )堆中的每个对象都有引用计数。 被引用一次,计数加1。 如果引用的变量的值为null,则表示计数减去1,并且在计数等于0之前是无效对象。 优点是算法简单,但缺点是“循环引用的无用对象”无法识别。
引用可达法(根搜索算法) ) )。
1 )程序将所有引用关系视为一个图,从一个节点GC ROOT中查找对应的应用节点,找到本节后继续查找该节点的引用节点,查找完所有引用节点后,其余节点均为未引用的节点,
)3)垃圾回收机制的算法非常多,其核心思想是什么? 哪个世代的垃圾回收最频繁?
垃圾回收机制保证能回收“无用对象”。 不需要的对象意味着没有引用该对象的变量。 Java垃圾回收器通过相关算法发现不需要的对象,进行去除和整理。
年轻一代
)4)什么是minorGC,什么是majorGC,什么是fullGC
minorGC:用于清洁年轻一代的区域。 充满生动的香菇区将触发一次Minor GC。 清理不需要的对象,并将有用的对象复制到" Survivor1"、" Survivor2"区域。 (这两个区域的大小和空间相同,同一时间只使用一个Survivor1和Survivor2,一个为空。 ) ) ) ) ) ) )。
majorGC:用于清理老年代的区域
Full GC:用于清理年轻一代的老一代区域。 成本高,影响系统性能。
)5)垃圾回收的流程是什么?
新制作的对象绝大多数保存在鲜活的香菇中
如果鲜香菇已满(达到一定比例)无法创建新对象,请触发垃圾回收(GC ),去除无用对象,将剩下的对象分配给某个Survivor,在S1中
生动香菇区再次填满后,将S1中不能清空的对象保存在S2等另一个Survivor中,同时生动香菇区中不能清空的对象也复制到S1中,保证生动香菇和S1清空
在Survivor中多次(默认15次)重复未清理的对象将复制到上一个年代的“已固定”(tenured )区域
Old区域填满后,一次一次的完全垃圾回收(FullGC )触发,以前的xsdjmg世代的垃圾回收被称为) minorGC )