zoukankan      html  css  js  c++  java
  • java垃圾回收机制

    1 、垃圾回收机制(GC)
    垃圾回收就是回收内存中不再使用对象;
    (1)垃圾回收的步骤:
    1)查找内存中不再使用的对象;
    2)释放这些对象所占用的内存;
    (2)查找内存中不再使用的对象方法:
    1)引用计数法
    如果一个对象没有被任何引用指向,则可视为垃圾;
    缺点:不能检测到环的存在;
    2)根搜索算法:
    根搜索算法就是通过一系列名为“GC Roots”的对象作为起始点,
    从这些节点开始向下搜索,搜索所走过的路径成为引用链,当一个对象
    到GC Roots没有任何引用链相连时,则认为该对象未被引用。
    (3)放这些对象占用的内存

    总得来说就产生了三种类型的回收算法:
    1)标记-复制
    它将可用内存容量划分为大小相等的两块,每次只使用其中的一块。当这一块用完之后,
    就将还存活的对象复制到另外一块上面,然后在把已使用过的内存空间一次理掉。
    它的优点是实现简单,效率高,不会存在内存碎片。缺点就是需要2倍的内存来管理。
    2)标记-清理
    标记清除算法分为“标记”和“清除”两个阶段:首先标记出需要回收的对象,
    标记完成之后统一清除对象。它的优点是效率高,缺点是容易产生内存碎片。
    3)标记-整理
    标记操作和“标记-清理”算法一致,后续操作不只是直接清理对象,
    而是在清理无用对象完成后让所有 存活的对象都向一端移动,并更新引用其对象的指针。
    因为要移动对象,所以它的效率要比“标记-清理”效率低,但是不会产生内存碎片。
    4)基于分代的假设
    由于对象的存活时间有长有短,所以对于存活时间长的对象,
    减少被gc的次数可以避免不必要的开销。这样我们就把内存分成新生代和老年代,
    新生代存放刚创建的和存活时间比较短的对象,老年代存放存活时间比较长的对象。
    这样每次仅仅清理年轻代,老年代仅在必要时时再做清理可以极大的提高GC效率,
    节省GC时间。









  • 相关阅读:
    xhtml+css (网站重构)
    一个典型的代码走查检查单
    谈谈单位时间内投票次数限制
    .NET性能优化方面的总结
    IE6.0、IE7.0 与 FireFox CSS
    vue3中使用 aggrid 表格组件
    基于predis高并发情况下实现频率控制的函数
    Redis之Centos下使用redis
    SVN的安装和使用
    Git配置教程
  • 原文地址:https://www.cnblogs.com/heng-yan/p/6256967.html
Copyright © 2011-2022 走看看