zoukankan      html  css  js  c++  java
  • Java 垃圾回收

      续前节,前面列举了Java判断对象是否可回收的两种方法;可达性分析与引用权重法。多数虚拟机所采用的的是可达性分析方法。下面写一下Java中的垃圾收集算法。

      Java中垃圾收集算法主要有4中算法分别为:标记-清除法;复制算法;标记-整理法;分代收集算法。详情如下。

      1、标记-清除法

        标记清除法算法主要分两个阶段进行;①、标出所有需要回收的内存片段,②、回收所标记内存。此种方法存在两种不足。一、标记、清除两个过程对性能损耗较大,效率太低;二、标记清除后会产生大量的内存碎片。如下图:

      

      

      

      2、复制算法

      复制算法采用将Java程序申请的内存一分为二;此处用(A、B代表);首先使用A块内存;当到了GC回收时;将A内存中的所有存活对象所占用的内存片段复制并整理到B内存块中。A->B; B->A 以此方式交替进行。此方法存在弊端为;消耗大量内存空间、具体如下图:

     

     

      3、标记-整理法

      由于有的对象存活率较高对其它对象依赖程度也相对较高(可称为 老年代);以上两种方法都不能满足所以产生了此种算法:标记整理法。此方法与标记清理方法类似;后续清除方法不同;流程:标记->将存活对象向一端移动->清除 清除端对象。如下图:

       4、分代收集算法

      分代收集算法主要将内存分为新生代;老年代两种。在新生代中由于大批量对象处于可回收对象;所以采用复制算法。在老年代中由于大量对象并不需要清除操作;因此可以采用:标记-清除算法 或者 标记-整理算法。

  • 相关阅读:
    软工假期预习作业1
    2号团队-团队任务4:每日立会(汇总)
    2号团队-团队任务4:每日立会(2018-11-26)
    2号团队-团队任务4:每日立会(2018-11-27)
    第二小组首次会议记录
    第二次作业
    自我介绍+课后作业1:准备
    Linux安装redis
    Redis面试题
    Mybatis面试题
  • 原文地址:https://www.cnblogs.com/axuduo/p/11442591.html
Copyright © 2011-2022 走看看