【jvm】GC Roots有哪些

news/2024/12/12 15:56:10/

目录

          • 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/news/1554536.html

相关文章

Scala的正则表达式(1)

package hfd //正则表达式的应用场景 //1.查找 findAllin //2.验证 matches //3.替换//验证用户名十分合法 //规则: //1.长度在6-12之间 //2.不能数字开头 //3.只能包含数字,大小写字母,下划线 object Test36 {def main(args: Array[String])…

ubuntu 18.04 server常用配置

1. 配置静态ip 编辑/etc/netplan目录下的配置文件。以下是步骤和示例配置: 找到Netplan配置文件,通常命名为01-netcfg.yaml,50-cloud-init.yaml或类似。 使用文本编辑器编辑该文件,比如使用nano或vim。 修改配置文件以设置静态…

top命令和系统负载

1 top中的字段说明 top是一个实时系统监视工具,可以动态展现出 CPU 使用率、内存使用情况、进程状态等信息,注意这些显示的文本不能直接使用 > 追加到文件中。 [rootvv~]# top -bn 1 | head top - 20:08:28 up 138 days, 10:29, 4 users, load av…

后端处理跨域问题

1. CORS(跨域资源共享) 操作步骤: 设置CORS头部: 对于简单的GET、POST或HEAD请求,服务端需要在HTTP响应中添加Access-Control-Allow-Origin头部,以指定允许访问的源。例如,在Node.js中使用Expr…

【机器人】控制之稳定性判定: 李雅普诺夫Lyapunov (2) 如何设计李(李雅普诺夫)函数

系统模型和构造 Lyapunov 函数之间是有关系的,但这种关系并不是唯一的,也就是说,构造 Lyapunov 函数需要参考系统模型的特性,但可以有多种选择。以下从理论和实践两方面解释它们的关系。 理论上的关系 系统模型给出动态行为&#…

Spring Boot 集成 MyBatis 全面讲解

Spring Boot 集成 MyBatis 全面讲解 MyBatis 是一款优秀的持久层框架,与 Spring Boot 集成后可以大大简化开发流程。本文将全面讲解如何在 Spring Boot 中集成 MyBatis,包括环境配置、基础操作、高级功能和最佳实践。 一、MyBatis 简介 1. SqlSession …

Github 2024-12-08 php开源项目日报 Top10

根据Github Trendings的统计,今日(2024-12-08统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10Shell项目1JavaScript项目1Blade项目1Laravel:表达力和优雅的 Web 应用程序框架 创建周期:4631 天开发语言:PHP, BladeStar数量:7…

数据结构排序算法详解

数据结构排序算法详解 1、冒泡排序(Bubble Sort)2、选择排序(Selection Sort)2、插入排序(Insertion Sort)4、快速排序(Quick Sort) 1、冒泡排序(Bubble Sort&#xff09…