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、分代收集算法

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

  • 相关阅读:
    iOS开发-UINavigationController简单介绍
    iOS开发-UITableView表格优化
    iOS开发-UITableView常用方法
    iOS开发-数据选择UIPickerView
    iOS开发-照片选择
    The Best KPIs to Use in Your Company
    IIS webService 并发 性能
    转---CentOS安装Oracle数据库详细介绍及常见问题汇总
    oracle rac的启动与停止
    [转] nginx配置优化+负载均衡+动静分离(附带参数解析)
  • 原文地址:https://www.cnblogs.com/axuduo/p/11442591.html
Copyright © 2011-2022 走看看