面试的时候被问到垃圾回收时该怎么回答?

01结合Eden区,S0,S1和old区,描述一下一个对象创建的过程。
回答:jvm在创建对象时,首先会试图在Eden区为该对象分配内存(如果该对象是大对象,占用内存空间很大,超出临界值则直接在old区为该对象分配内存,如果old区放不下则触发outofmemory异常),如果Eden区剩余空间没有足够的大的区域装载该对象则触发一次young gc,jvm会把Eden存活的对象复制到s0区(也就是from区),Eden区清空。下一次young gc (minor gc)触发时,Eden区和s0区的存活对象会被复制到s1区(也就是to区),s区中经历15次gc还存活的对象会被移到old区,old区的内存空间不够用了则触发old gc。在这个过程中如果s0或者s1区内存不够则会根据担保机制向old区借空间内存存放对象。

02怎么确定一个对象为垃圾?
不再需要被引用的对象或gc root不可达对象我们可以确定为垃圾,可以被回收。

03常用的垃圾算法有哪些?并且有哪些优缺点?
标记清除算法:优点是实现简单,缺点是需要扫描整个内存空间,耗时,且造成很多不连续的空间碎片。
标记整理:标记整理同样也是对整个空间的对象进行扫描标记,并将存活的对象按照顺序重新排列。优点是解决空间不连续碎片问题,缺点是实现起来麻烦,非常耗时
标记复制算法:优点是实现简单,耗时低,缺点是需要浪费一半的内存空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值