开发者社区> 问答> 正文

为什么新生代垃圾回收效率快很多?

看过深入理解java虚拟机,书上这个问题以结论性的一句话带过了,面试的时候被问到了这个问题,老年代对象生存时间长,不容易被回收,所以效率低?感觉怪怪的

展开
收起
蛮大人123 2016-02-25 14:04:13 4888 0
2 条回答
写回答
取消 提交回答
  • 集团客户体验事业群高级技术专家邱小侠,阿里花名肥侠。 2014年加入阿里巴巴,现在负责客户体验驱动及创新中心有关商家业务的开发工作。负责开发了商家维权中心和商家品控平台,同时也负责集团在线工作台和知识库的研发工作。

    新生代用的是复制算法,是通过宝贵的内存空间来换取效率的的方法。S0和S1只能用一块。
    老年代用的是标记清楚,空间利用率高了,但是相应的效率就会低一些。

    本质还是算法不一样。

    2019-07-17 18:47:27
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    从年代划分的角度来讲,我觉得问题是本末倒置了,年代划分目的是区别长期存在对象和短时间存在对象。
    对象有可能长期存活,所以才会被放入老年代,标记整理过后,由于老年代的对象有很几率继续存活,所有回收的内存少。
    新生对象有可能朝生暮死,假如新生对象有80%的概率死亡,经过多轮筛选后,将仍存活的对象存入老年代。那么从这样的流程看来,老年代的对象回收效率果然低。

    2019-07-17 18:47:27
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JVM的GC 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载