【jvm】GC Roots有哪些

ops/2024/12/16 0:38:35/

目录

          • 1. 说明
          • 2. 虚拟机栈(栈帧中的局部变量表)中的引用
          • 3. 方法区中的类静态属性引用
          • 4. 本地方法栈(Native方法栈)中JNI(Java Native Interface)的引用
          • 5. 活跃线程(Active Threads)
          • 6. Monitor Used(用于同步的监控对象)
          • 7. 系统类加载器加载的类
          • 8. JVM持有的对象

1. 说明
  • 1.在JVM(Java虚拟机)中,GC Roots(垃圾收集根)是垃圾收集器进行可达性分析时,作为起始点的对象集合。
  • 2.这些GC Roots对象能够直接或间接持有其他对象的引用,从而确保从它们出发可以遍历到所有存活的对象。
2. 虚拟机栈(栈帧中的局部变量表)中的引用
  • 1.局部变量表是线程私有的一部分,存储着方法的局部变量和参数。
  • 2.这些局部变量和参数可能持有对堆中对象的引用,因此它们被视为GC Roots。
3. 方法区中的类静态属性引用
  • 1.方法区(也称为永久代或元空间)存储着类的元数据信息,包括静态变量。
  • 2.这些静态变量可能持有对堆中对象的引用,因此也被视为GC Roots。
4. 本地方法栈(Native方法栈)中JNI(Java Native Interface)的引用
  • 1.本地方法栈是JVM为执行本地方法(即非Java代码的方法)而保留的栈空间。
  • 2.JNI允许Java代码与本地代码进行交互,本地方法中的局部变量和参数可能持有对Java对象的引用,这些引用也是GC Roots的一部分。
5. 活跃线程(Active Threads)
  • 1.正在执行的线程被视为GC Roots,因为它们持有当前执行状态的信息,包括线程栈中的局部变量和参数,这些可能引用堆中的对象。
6. Monitor Used(用于同步的监控对象)
  • 1.在Java中,使用synchronized关键字进行同步时,会涉及到监控对象(monitor)。
  • 2.这些监控对象在同步过程中可能持有对其他对象的引用,因此也被视为GC Roots。
7. 系统类加载器加载的类
  • 1.由系统类加载器(bootstrap class loader或system class loader)加载的类通常不会被垃圾收集器回收,因为这些类对于JVM的运行至关重要。
  • 2.这些类及其静态字段也可能持有对堆中对象的引用,因此被视为GC Roots。
8. JVM持有的对象
  • 1.JVM可能会为某些特殊目的而保留一些对象,这些对象虽然不直接由用户代码持有,但JVM认为它们是重要的,因此也被视为GC Roots。
  • 2.这些对象可能包括系统类加载器、一些重要的异常类、预分配的对象等。

http://www.ppmy.cn/ops/142247.html

相关文章

网络编程02

1. 回显服务器——UDP 一个 UDP 的客户端/服务器通信的程序——回显服务器(echo server): 这个程序只是单纯地调用 Socket API 1)让客户端给服务器发送一个请求,请求就是从控制台输入的字符串 2)服务器…

Layer Norm 提升训练稳定性的原理:解决权重初始值敏感性问题(中英双语)

Layer Norm 提升训练稳定性的原理与数值模拟 在深度学习模型中,权重初始值对训练过程的稳定性影响极大,尤其在深层网络和长序列任务中,初始值不当会导致梯度消失或爆炸的问题,进而导致训练不稳定。Layer Normalization (Layer No…

开源分布式系统追踪-00-overview

分布式跟踪系列 CAT cat monitor 分布式监控 CAT-是什么? cat monitor-02-分布式监控 CAT埋点 cat monitor-03-深度剖析开源分布式监控CAT cat monitor-04-cat 服务端部署实战 cat monitor-05-cat 客户端集成实战 cat monitor-06-cat 消息存储 skywalking …

基于小程序实现地图定位、轨迹绘制、地图标点、快捷导航、唤醒导航APP、开箱即用

目录 前言研究背景与意义研究目标与内容研究方法与技术路线小程序地图组件介绍定位技术与原理轨迹绘制技术地图标注与标记功能地图定位与轨迹绘制功能实现定位功能设计与实现获取用户当前位置总结说明代码块前言 研究背景与意义 地图定位和轨迹追踪作为智能手机中常见的功能之…

【JAVA】Java项目实战—Java EE项目:企业资源规划(ERP)系统

在企业管理中,企业资源规划(ERP)系统是不可或缺的工具。它能够帮助企业高效管理各种资源,包括人力资源、财务资源和库存等。Java作为一种成熟的编程语言,因其跨平台特性、强大的生态系统以及良好的社区支持&#xff0c…

git 推送远程仓库 master -> master (push declined due to repository rule violations)

问题概述 从报错信息中看出,提交中包含了秘密,提交被拒绝了,从提供的网址Working with push protection from the command line - GitHub Docs 中找到原因。原来是提交中包含了github的Personal access tokens被拒绝了。 解决方法 rebase …

GitHub 开源仓库推荐:poe2skills

poe2skills是一个专为《流放之路 2》玩家和开发者设计的开源项目。它收集了游戏中所有的技能和被动宝石信息,帮助玩家更好地理解和利用游戏中的各种机制。对于那些希望深入挖掘游戏潜力的玩家来说,这个仓库无疑是一个宝贵的资源。 功能亮点 全面的技能数…

【Linux】常用资源监控工具

最常用的三个命令 人性化实时监控cpu、内存、进程等资源使用情况 htop 实时监控 GPU watch -n 1 nvidia-smi 人性化查看硬盘分区使用情况 df -h Linux 系统资源监控指南 1. CPU 监控 1.1 实时监控命令 # top - 经典的实时系统监控工具 top# htop - 更友好的 top 替代品&a…