美文网首页
2.1GC系列-------如何进行回收(方法论)

2.1GC系列-------如何进行回收(方法论)

作者: 风凡的雪 | 来源:发表于2018-07-03 23:39 被阅读0次

本篇针对第二个问题:如何对垃圾进行回收-方法论

首先讲解垃圾回收算法,垃圾回收算法是一个演变的过程。

  • 标记-清除算法:首先标记要回收的对象,然后进行回收。
    缺点:产生大量内存碎片

  • 复制算法:算法原理是将内存划分成两半A、B,每次只使用其中的一半,当发生GC的时候将未被标记的区域复制到另一半,然后再将另一半全部清除掉。在实际的使用中,新生代就会使用复制算法,分为一个较大的eden区和两个较小的survior区域,一般比例是8:1:1。每次分配新对象就是分配在一个eden和survior中,当回收时就把存活对象放在另一个survior中。
    缺点:如果是将内存对半分,则太浪费内存了。

  • 标记-整理算法:算法原理是针对标记-清除算法会产生大量内存碎片,现在则是将存活对象向同一个方向进行移动,然后再将剩余的死亡对象给清除掉。针对老年代对象大多数都存活的特点,一般会使用这个算法。

  • 分代收集算法:将内存分区,对不同内存使用不同的收集算法。
    新生代:对象存活率低,只有少量能存活,有老年代能担保,所以可选择复制算法。
    老年代:对象存活率高,只有少量死去,没有内存为其担保,所以可选择标记-整理或标记-清除算法。

相关文章

  • 2.1GC系列-------如何进行回收(方法论)

    本篇针对第二个问题:如何对垃圾进行回收-方法论 首先讲解垃圾回收算法,垃圾回收算法是一个演变的过程。 标记-清除算...

  • 7种JVM垃圾收集器特点,优劣势、及使用场景

    本系列会持续更新。 今天继续JVM的垃圾回收器详解,如果说垃圾收集算法是JVM内存回收的方法论,那么垃圾收集器就是...

  • 垃圾收集器

    问题: 1、哪些内存需要回收 2、何时回收 3、如何回收 问题一: 判断堆内存哪些对象已经“死亡”,需要进行回收?...

  • Guava Cache系列之三:源码分析

    概述 前面的两篇文章(Guava Cache系列之一:如何加载缓存 和 Guava Cache系列之二:如何回收缓...

  • JVM垃圾回收策略

    本文将分析JVM的垃圾回收策略,哪些内存需要回收和如何回收的问题。 哪些内存需要回收 垃圾收集器在对堆进行回收前,...

  • java虚拟机内存回收机制

    三个问题 哪些内存需要回收? 什么时候回收? 如何回收? 哪些内存需要回收 在进行垃圾回收之前,首先要明确的就是哪...

  • 01 解读JVM机制-内存回收

    本小结将会以以下4个问题进行探讨: 内存是如何分配和回收? 什么样的数据需要回收? 什么时候进行回收? 内存中的数...

  • 新手初学Java性能之 垃圾收集器

    前言 垃圾收集算法是内存回收的方法论;垃圾收集器是内存回收的具体实现。Java虚拟机规范中对垃圾收集器应该如何实现...

  • 深入JVM内核12 JVM调优

    1.垃圾收集器 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 虽然我们对各个收集器进行...

  • 深入理解JVM(5) : Java垃圾收集器

    如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 Java虚拟机规范中对垃圾收集器应该如何...

网友评论

      本文标题:2.1GC系列-------如何进行回收(方法论)

      本文链接:https://www.haomeiwen.com/subject/qjwjuftx.html