zoukankan      html  css  js  c++  java
  • Jvm垃圾收集算法

    标记-清除

    标记-清除算法是现代垃圾回收算法的思想基础。标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。一种可行的实现是,在标记阶段,首先通过根节点,标记所有从根节点开始的可达对象。因此,未被标记的对象就是未被引用的垃圾对象。然后,在清除阶段,清除所有未被标记的对象

     

    标记-整理

    根据老年代的特点提出标记-整理算法。它在标记-清除算法的基础上做了一些优化。和标记-清除算法一样,标记-整理算法也首先需要从根节点开始,对所有可达对象做一次标记。但之后,它并不简单的清理未标记的对象,而是将所有的存活对象压缩到内存的一端。之后,清理边界外所有的空间。

    复制算法

    新生代回收算法。将原有的内存空间分为三块,一块较大的Eden空间和两块较小的Survivor空间。每次使用Eden和一块Survivor。当对象回收时把存活的对象复制到另外一块Survivor空间。如果空间不够则直接进入老年代。

     

    分代思想

    依据对象的存活周期进行分类,短命对象归为新生代,长命对象归为老年代。

    根据不同代的特点,选取合适的收集算法

    少量对象存活,适合复制算法

    大量对象存活,适合标记清理或者标记压缩

     

    Stop-The-World

    Java中一种全局暂停的现象

    全局停顿,所有Java代码停止,native代码可以执行,但不能和JVM交互

    多半由于GC引起

    Dump线程

    死锁检查

    堆Dump

    程序不断运行就有垃圾产生,大家就都得停下来,等收集完了,大家继续干活。让大家都停下来,时间长了肯定会不爽。

  • 相关阅读:
    Java 8 对 List<List<String>> 排序
    获取自然月的起始日期和终止日期
    Java 中如何计算两个字符串时间之间的时间差?(单位为分钟)
    Java StringJoiner
    回文数
    Java 中的值传递和引用传递问题
    substring
    集合的四种遍历方式
    Java 中的静态嵌套类和非静态嵌套类
    使用 Java 查找字符串中出现次数最多的字符以及出现的次数?
  • 原文地址:https://www.cnblogs.com/jiumao/p/7137921.html
Copyright © 2011-2022 走看看