首页 > 编程知识 正文

垃圾回收机制面试题,java的内存机制

时间:2023-05-06 07:21:31 阅读:48127 作者:3389

读了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 )

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。