前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaGC垃圾回收机制

JavaGC垃圾回收机制

作者头像
itze
发布2022-10-31 16:03:31
1410
发布2022-10-31 16:03:31
举报
文章被收录于专栏:IT者

如何确定垃圾回收

引用计数算法

给使用的每个对象添加一个计数器,每次引用,计数器加1,失去引用,计数器减1,那么当计数器一段时间保持为0的时候,我们认为这个对象就可以被回收 缺点:当两个对象相互引用的时候,由于是两个对象彼此相互引用,已经没有其他引用存在,此时计数器都是1,但是并不会被回收

可达性分析算法

程序把我们所有的引用关系看作一张图,从一个节点的GC ROOT开始分析引用,找到引用,然后继续寻找该引用节点的引用,直到找到所有的引用,那么没有被引用的节点,就是无用的节点

目前Java中可作为GC ROOT的对象
  • java虚拟机栈中的引用的对象
  • 方法区中的类静态属性引用的对象。 (一般指被static修饰的对象,加载类的时候就加载到内存中)
  • 方法区中的常量引用的对象
  • 本地方法栈中的JNI(native方法)引用的对象

GC处理垃圾算法

标记-清除

分为标记和清除两个阶段处理内存中的对象,效率不高

复制算法

将可用内存按照容量分为大小相同的两块,使用的时候只使用其中一块区域,当该区域内存满了的时候,就将该块内容中活着的对象复制到另外一块容量区域,然后清理之前用过的那块内存空间,彼此交换两块内存区,完成垃圾收集

标记-整理(标记-压缩)

在标记-清除的基础上进行优化,将活着的对象压缩到内存的一端,然后清理除该端边界之外的内存区域

分区算法

将整个内存空间分为N个连续不同的内存区域,每个单独使用,独立回收,小颗粒度控制

GC算法优略评估

吞度量(Throughput),吞吐量越大越好 停顿时间(pasue time),暂停时间越短越好

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年1月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何确定垃圾回收
    • 引用计数算法
      • 可达性分析算法
        • 目前Java中可作为GC ROOT的对象
    • GC处理垃圾算法
      • 标记-清除
        • 复制算法
          • 标记-整理(标记-压缩)
            • 分区算法
            • GC算法优略评估
            相关产品与服务
            文件存储
            文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档