zoukankan      html  css  js  c++  java
  • JVM的垃圾回收算法

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

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

    2.复制算法(Copying)

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

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

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

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

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

  • 相关阅读:
    深入浅出JavaScript (一)初识
    “0”基础让你学会 GridView (一)
    VS 中PageLayout 属性设置
    ASP.NET Forms身份认证
    教务系统数据库设计 (一)
    深入浅出Javascript(三)创建自定义对象以及属性、方法
    .NET 中的Cache
    深入浅出JavaScript (二) 代码放置位置与执行顺序
    触发器特殊的存储过程
    ASP.NET与JavaScript轻松实现输入信息验证
  • 原文地址:https://www.cnblogs.com/wyl-yulior-000/p/11564411.html
Copyright © 2011-2022 走看看