三 Java面试之JVM复习

本篇主要讲垃圾收集与算法 。 GC要做的三件事:如何确定垃圾,什么时候回收,怎么回收

三 Java面试之JVM复习

文章插图
方式/
1【三 Java面试之JVM复习】若何确定垃圾之引用计数法
三 Java面试之JVM复习

文章插图

2若何确定垃圾之可达性阐发法,为领会决引用计数法中轮回引用问题,java利用了可达性阐发法,经由过程一系列的GC roots对象作为起点搜刮 。
三 Java面试之JVM复习

文章插图

3标识表记标帜断根算法:最根本的垃圾收受接管算法,分为两个阶段,标注和断根 。 标识表记标帜阶段会标识表记标帜出所有需要收受接管的对象,断根阶段收受接管被标识表记标帜的对象所占用的空间,如图所示,从图中我们可以看到,该算法最大的问题是内存碎片化严重,后续可能会发生大对象找不到可操纵的空间 。
三 Java面试之JVM复习

文章插图

4复制算法:为领会决标识表记标帜断根算法内存碎片化的缺陷而被提出的算法 。 按内存容量将内存划分为等大小的两块 。 每次只利用此中一块,当这一块内存满后将尚存活的对象复制到另一块去,把已利用的内存清失落,如图所示 。 这种算法固然实现简单,内存效率高,不易发生碎片,可是最大的问题是可用内存被压缩到了本来的一半 。 且存活对象增多的话,copying算法的效率会大大降低 。
三 Java面试之JVM复习

文章插图

5标识表记标帜清算算法:连系了以上两个算法,为了避免缺陷而提出 。 标识表记标帜阶段和标识表记标帜断根算法不异,分歧的是标识表记标帜后不是清理对象,而是将存活对象移标的目的内存的一端 。 然后断根可收受接管对象 。 如图:
三 Java面试之JVM复习

文章插图

6分代收集算法是今朝大部门JVM所采用的方式,其焦点思惟是按照对象存活的分歧生命周期划分为分歧的域,一般环境下将GC堆划分为新生代和老年月 。 老年月的特点是每次垃圾收受接管时只有少量对象需要被收受接管,新生代的特点是每次垃圾收受接管时都有大量的垃圾需要被收受接管,是以可以按照分歧区域选择分歧的算法 。
三 Java面试之JVM复习

文章插图

三 Java面试之JVM复习

文章插图

三 Java面试之JVM复习

文章插图


以上内容就是三 Java面试之JVM复习的内容啦,希望对你有所帮助哦!

    推荐阅读