• jvm垃圾回收


    1. 常见的垃圾回收算法

    • 复制:将堆内分成两个相同空间,从根(ThreadLocal的对象,静态对象)开始访问每一个关联的活跃对象,将空间A的活跃对象全部复制到空间B,然后一次性回收整个空间A。因为只访问活跃对象,将所有活动对象复制走之后就清空整个空间,不用去访问死对象,所以遍历空间的成本较小,但需要巨大的复制成本和较多的内存。
    • 标记清除(mark-sweep):收集器先从根开始访问所有活跃对象,标记为活跃对象。然后再遍历一次整个内存区域,把所有没有标记活跃的对象进行回收处理。该算法遍历整个空间的成本较大暂停时间随空间大小线性增大,而且整理后堆里的碎片很多。
    • 标记整理(mark-sweep-compact):综合了上述两者的做法和优点,先标记活跃对象,然后将其合并成较大的内存块。

    2. 垃圾分代

      年轻代

        回收算法:复制

      年老代

        回收算法:标记整理

      永久代

    3. 其他

      正确设置堆大小

      避免堆失效:初始堆大小(-Xms)设成与最大堆大小(-Xmx)不相同,应用程序可能遇到这样的情况,不断出现分配失败而堆没有扩展。

  • 相关阅读:
    站立会议(二)
    站立会议(一)
    电梯演讲 作业派
    《你的灯亮着么》三四篇
    《你的灯亮着么》一二篇
    找一
    水王2
    搜狗输入法使用评价
    找水王问题
    典型用户及用户场景分析
  • 原文地址:https://www.cnblogs.com/lxq0309/p/3643255.html
Copyright © 2020-2023  润新知