当前位置: 首页 > article >正文

java GC Roots 有哪些

GC Roots 是一组必须活跃的引用。用通俗的话来说,就是程序接下来通过直接引用或者间接引用,能够访问到的潜在被使用的对象。

GC Roots 包括:

  • Java 线程中,当前所有正在被调用的方法的引用类型参数、局部变量、临时值等。也就是与我们栈帧相关的各种引用。
  • 所有当前被加载的 Java 类。
  • Java 类的引用类型静态变量。
  • 运行时常量池里的引用类型常量(String 或 Class 类型)。
  • JVM 内部数据结构的一些引用,比如 sun.jvm.hotspot.memory.Universe 类。
  • 用于同步的监控对象,比如调用了对象的 wait() 方法。
  • JNI handles,包括 global handles 和 local handles。

这些 GC Roots 大体可以分为三大类,下面这种说法更加好记一些:

  • 活动线程相关的各种引用。
  • 类的静态变量的引用。
  • JNI 引用。

在这里插入图片描述

有两个注意点:

  • 我们这里说的是活跃的引用,而不是对象,对象是不能作为 GC Roots 的。
  • GC 过程是找出所有活对象,并把其余空间认定为“无用”;而不是找出所有死掉的对象,并回收它们占用的空间。所以,哪怕 JVM 的堆非常的大,基于 tracing 的 GC 方式,回收速度也会非常快。

http://www.kler.cn/a/386072.html

相关文章:

  • SystemVerilog学习——类的继承
  • C#笔记(3)
  • 信奥学习规划(CSP-J/S)
  • git上传文件到远程仓库
  • Spring Boot框架:构建可扩展的网上商城
  • 直接映射缓存配置
  • Docker Compose部署Rabbitmq(脚本下载延迟插件)
  • Spring:项目中常见的四种分页方案!
  • 新能源行业必会基础知识-----电力现货市场理论篇-----电力现货市场价格机制-----电力现货市场价格机制
  • Kubernetes-ArgoCD篇-03-部署
  • kafka常见面试题总结
  • C++继承(图文非常详细)
  • html+js+css实现拖拽式便签留言
  • SSL/TLS握手过程
  • 渗透测试专业名词解释
  • 罗技M590鼠标无法连接到无线接收器
  • 室内定位论文精华-20241108
  • 软件需求规格书评审报告,系统需求设计申评审,代码和测试过程评审报告,软件各类资质评审资料(word原件)
  • 书生实战营第四期-基础岛第四关-InternLM + LlamaIndex RAG 实践
  • uni-app开发小程序【uni.showToast字数超过两行自动省略显示不全问题】
  • 论文阅读:基于语义分割的非结构化田间道路场景识别
  • SpringBoot开发——Spring Boot 3种定时任务方式
  • 深入探索哈尔滨二级等保下的负载均衡SLB及其核心算法
  • FineBI帆软 FCA-数据分析理论 正确答案
  • 【spark面试】spark的shuffle过程
  • 【QT项目】QT6项目之基于C++的通讯录管理系统(联系人/学生管理系统)