美文网首页
JVM垃圾收集(理论)

JVM垃圾收集(理论)

作者: 快点给我想个名 | 来源:发表于2019-10-17 22:39 被阅读0次
垃圾判断算法
  • 引用计数算法
        给对象添加一个引用计数器,每当有一个地方引用它,计数器值就加1.当引用失效后,计数器值就减1.任何时刻计数器为0的对象就是不可能再被使用的。但是无法解决对象之间互相循环引用的问题。
  • 可达性分析算法
        通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连时,则证明次对象是不可用的。
    • GC Roots的对象包括
      1.虚拟机栈(栈帧中的本地变量表)中引用的对象
      2.方法区中类静态属性引用的对象
      3.方法区中常量引用的对象
      4.本地方法栈中JNI引用的对象
堆和方法区垃圾回收
  • 堆垃圾回收
        在堆中,尤其是在新生代,常规应用进行一次GC一般可以回收70%-95%的空间,而方法区的GC效率远低于此。
  • 方法区垃圾回收
        方法区主要回收两部分内容:废弃常量和无用的类。类回收需要满足下面3个条件:
    1.该类所有的实例都已被回收,也就是Java堆中不存在该类的任何实例
    2.加载该类的ClassLoader已经被回收
    3.该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法
垃圾收集算法
  • 标记-清除算法(Mark-Sweep)
        算法分为标记和清除两个阶段,首先标记出所有需要回收的对象,然后回收所有需要回收的对象。
    • 缺点
      1.效率问题:标记和清除两个过程效率都不高,需要扫描所有对象。堆越大,GC越慢。
      2.空间问题:标记清理之后会产生大量不连续的内存碎片,内存碎片太多导致后续使用时无法找到足够连续的内存空间。从而导致提交触发一次垃圾回收。
  • 标记-整理算法(Mark-Compact)
        标记整理和标记清除算法一样,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。比标记清除算法耗费更多的时间进行整理。
  • 复制算法(Copying)
        将可用内存空间划分为两块,每次只使用其中一块,当半区内存用完了,将仅还存活的对象复制到另一块上面。然后就把原来内存空间清空即可。
    • 缺点
      1.需要将内存缩小为原来的一半
  • 分代收集算法

相关文章

  • JVM垃圾收集(理论)

    垃圾判断算法 引用计数算法    给对象添加一个引用计数器,每当有一个地方引用它,计数器值就加1.当引用失效后,计...

  • Jvm之CMS垃圾收集器

      这篇文章主要介绍JVM的CMS垃圾收集器,以及JVM提供的垃圾收集算法。 一、垃圾收集算法   JVM提供的三...

  • JVM学习笔记(3)-垃圾收集算法

    JVM学习笔记(1)-内存管理机制 JVM学习笔记(2)-内存分配与回收 垃圾收集算法 JVM垃圾收集算法有四种:...

  • 常见面试题

    JVM JVM 内存结构 垃圾收集策略与算法记回收,标记清除,复制算法 HotSpot 垃圾收集器 cms hos...

  • JVM Hostspot虚拟机

    jvm HotSpot 虚拟机垃圾收集器、收集算法、收集过程

  • 2020互联网Java后端面试专题解析—JVM21题

    前言 文章对 JVM 内存区域分布、JVM 内存溢出分析、JVM 垃圾回收算法/垃圾收集器、JVM 性能调优工具及...

  • JVM二.垃圾收集理论知识

    博主最近复习深入理解JVM一书,整理归纳,以形成系统认识和方便日后复习。本文主要介绍 引用 JVM垃圾回收算法 J...

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

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

  • JVM——垃圾收集

    程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,因此这几个区域的内存分配和回收都具备确定性,因为方...

  • G1收集器详解

    详解 JVM Garbage First(G1) 垃圾收集器 G1垃圾收集器入门

网友评论

      本文标题:JVM垃圾收集(理论)

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