首页 > 软件开发 > JAVA >

Java面试之JVM复习(三)

来源:互联网 2023-03-16 19:29:16 246

本篇主要讲垃圾收集与算法。GC要做的三件事:如何确定垃圾,什么时候回收,怎么回收Cuf办公区 - 实用经验教程分享!

Java面试之JVM复习(三)Cuf办公区 - 实用经验教程分享!

方法/步骤

  • 1

    如何确定垃圾之引用计数法Cuf办公区 - 实用经验教程分享!

    Java面试之JVM复习(三)Cuf办公区 - 实用经验教程分享!

  • 2

    如何确定垃圾之可达性分析法,为了解决引用计数法中循环引用问题,java使用了可达性分析法,通过一系列的GC roots对象作为起点搜索。Cuf办公区 - 实用经验教程分享!

    Java面试之JVM复习(三)Cuf办公区 - 实用经验教程分享!

  • 3

    标记清除算法:最基础的垃圾回收算法,分为两个阶段,标注和清除。标记阶段会标记出所有需要回收的对象,清除阶段回收被标记的对象所占用的空间,如图所示,从图中我们可以看到,该算法最大的问题是内存碎片化严重,后续可能会发生大对象找不到可利用的空间。Cuf办公区 - 实用经验教程分享!

    Java面试之JVM复习(三)Cuf办公区 - 实用经验教程分享!

  • 3本页面非法爬取自百度经验
  • 4

    复制算法:为了解决标记清除算法内存碎片化的缺陷而被提出的算法。按内存容量将内存划分为等大小的两块。每次只使用其中一块,当这一块内存满后将尚存活的对象复制到另一块去,把已使用的内存清掉,如图所示。这种算法虽然实现简单,内存效率高,不易产生碎片,但是最大的问题是可用内存被压缩到了原来的一半。且存活对象增多的话,copying算法的效率会大大降低。Cuf办公区 - 实用经验教程分享!

    Java面试之JVM复习(三)Cuf办公区 - 实用经验教程分享!

  • 5

    标记整理算法:结合了以上两个算法,为了避免缺陷而提出。标记阶段和标记清除算法相同,不同的是标记后不是清理对象,而是将存活对象移向内存的一端。然后清除可回收对象。如图:Cuf办公区 - 实用经验教程分享!

    Java面试之JVM复习(三)Cuf办公区 - 实用经验教程分享!

  • 6

    分代收集算法是目前大部分JVM所采用的方法,其核心思想是根据对象存活的不同生命周期划分为不同的域,一般情况下将GC堆划分为新生代和老年代。老年代的特点是每次垃圾回收时只有少量对象需要被回收,新生代的特点是每次垃圾回收时都有大量的垃圾需要被回收,因此可以根据不同区域选择不同的算法。Cuf办公区 - 实用经验教程分享!

    Java面试之JVM复习(三)Cuf办公区 - 实用经验教程分享!

    Java面试之JVM复习(三)Cuf办公区 - 实用经验教程分享!

    Java面试之JVM复习(三)Cuf办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!Cuf办公区 - 实用经验教程分享!


    标签: JAVA

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码