面试——Java垃圾回收算法和垃圾回收器

Java垃圾回收算法:
Java垃圾回收算法是Java虚拟机的关键组成部分,它负责自动管理内存并回收不再使用的对象。
标记-清除算法:
标记-清除算法分为两个主要阶段。首先,它会遍历整个堆,标记所有被活动对象引用的对象,然后,在标记阶段之后,它会清除所有未标记的对象,释放它们所占用的内存空间。这个算法相对比较简单,缺点就是会产生内存碎片。
复制算法:
复制算法将堆内存分为两个区域,通常是”From“区和”To“区,当”From“区的对象被标记为存活时,它们将被复制到”To“区,而未被标记的对象将被丢弃,完成复制后,”From“区和”To“区的角色交换。这种算法的优点是简单高效,但它浪费了一半的内存空间。
标记-整理算法:
标记-整理算法在标记阶段与标记-清除算法类似,但在清除阶段,它会将所有存活对象向一端移动,然后清理边界之外的内存。这种方式可以解决标记-清楚算法的内存碎片问题,并且仍然能够高效地回收内存。
分代算法:
分代算法是基于对象的生命周期的概念。它将内存分为几个不同的时代,通常是年轻代和老年代。大部分新创建的对象会被分配到年轻代,而老年代主要用于存放生命周期比较长的对象。这个算法根据代打特性使用不同的垃圾回收算法,如复制算法用于年轻代,标记-整理算法用于老年代。这种分代的方式可以根据对象的不同特点来优化垃圾回收过程。

Java垃圾回收器:

1.Serial垃圾回收器(单线程、复制算法)
Serial垃圾收集器是最基本、发展时间最长的垃圾收集器。他不但只会用一个线程去收集垃圾,在收集垃圾的时候其他的所有工作线程必须停止,即会发生Stop the World现象,对于Stop the world(在垃圾回收开始时停掉其他所有的线程,只供垃圾回收器回收使用,对于系统尤其是高并发系统来说就是一个噩梦),直到垃圾回收结束。
优点:简单高效,对于限定单个CPU的环境来说,Serial垃圾收集器没有线程交互(交换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值