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

    1. 常见的垃圾回收算法

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

    2. 垃圾分代

      年轻代

        回收算法:复制

      年老代

        回收算法:标记整理

      永久代

    3. 其他

      正确设置堆大小

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

  • 相关阅读:
    python django 创建app失败 升级sqlite3 或者修改数据库连接为mysql
    Decima json 化
    openpyxl excel操作
    centos添加python虚拟环境
    oracle的参数文件:pfile和spfile
    修改 db_unique_name
    工具 --- Vim
    部署 --- Nginx
    工具 --- Git使用
    django 之(五) --- RESTApi总结
  • 原文地址:https://www.cnblogs.com/lxq0309/p/3643255.html
Copyright © 2011-2022 走看看