• JVM的垃圾回收算法


    1.标记-清除算法(Mark-Sweep)

     对内存中的对象依次的进行判断,如果对象仍然需要使用那么就打一个标记保留下来。这样经过一次迭代之后,所有的对象都会被筛选判断一次。紧接着会对内存中已经标记的对象依次进行清除。但是这样会导致结果存在很多的内存碎片。

    2.复制算法(Copying)

    通过根搜索算法标记被引用的对象,之后会申请新的内存空间,将标记的对象复制到新的内存空间里,存活的对象复制完,会清空原来的内存空间,将新的内存最为jvm的对象存储空间。这样虽然解决了内存内存碎片问题,但是如果对象很多,重新申请新的内存空间会很大,在内存不足的场景下,会对jvm运行造成很大的影响。

    3.标记整理算法(Mark-Compact)

    标记整理实际上是在标记清除算法上的优化,执行完标记清除全过程之后,再一次对内存进行整理,将所有存活对象统一向一端移动,这样解决了内存碎片问题。

    4.分代回收算法(Generational Collection)

    目前jvm常用回收算法就是分代回收,将内存以代的形式划分,然后针对情况分别使用性价比最高的算法进行处理。在Java中,一般将堆分为老年代和新生代。年轻代以复制算法为主,老年代以标记整理算法为主。因为新创建的对象往往被放置在年轻代中。而经过不断的回收,逐渐存活下来的对象被安置到了老年代中。越新的对象越可能被回收,越老的对象反而会存活的越久。

  • 相关阅读:
    Linux命令应用大词典-第11章 Shell编程
    Kubernetes 学习12 kubernetes 存储卷
    linux dd命令
    Kubernetes 学习11 kubernetes ingress及ingress controller
    Kubernetes 学习10 Service资源
    Kubernetes 学习9 Pod控制器
    Kubernetes 学习8 Pod控制器
    Kubernetes 学习7 Pod控制器应用进阶2
    Kubernetes 学习6 Pod控制器应用进阶
    Kubernetes 学习5 kubernetes资源清单定义入门
  • 原文地址:https://www.cnblogs.com/wyl-yulior-000/p/11564411.html
Copyright © 2020-2023  润新知