GC Root

转载 2016年08月08日 22:26:24

http://blog.csdn.net/fenglibing/article/details/8928927

常说的GC(Garbage Collector) roots,特指的是垃圾收集器(Garbage Collector)的对象,GC会收集那些不是GC roots且没有被GC roots引用的对象。

一个对象可以属于多个root,GC root有几下种:


  • Class - 由系统类加载器(system class loader)加载的对象,这些类是不能够被回收的,他们可以以静态字段的方式保存持有其它对象。我们需要注意的一点就是,通过用户自定义的类加载器加载的类,除非相应的java.lang.Class实例以其它的某种(或多种)方式成为roots,否则它们并不是roots,.
  • Thread - 活着的线程
  • Stack Local - Java方法的local变量或参数
  • JNI Local - JNI方法的local变量或参数
  • JNI Global - 全局JNI引用
  • Monitor Used - 用于同步的监控对象
  • Held by JVM - 用于JVM特殊目的由GC保留的对象,但实际上这个与JVM的实现是有关的。可能已知的一些类型是:系统类加载器、一些JVM知道的重要的异常类、一些用于处理异常的预分配对象以及一些自定义的类加载器等。然而,JVM并没有为这些对象提供其它的信息,因此就只有留给分析分员去确定哪些是属于"JVM持有"的了。

以下是一张由Java Profiler的标示出哪些是GC roots的示例图:



译自:http://www.yourkit.com/docs/80/help/gc_roots.jsp


GC ROOT的真实含义

作者:RednaxelaFX 链接:https://www.zhihu.com/question/53613423/answer/135743258 来源:知乎 著作权归作者所有,转载请联系作者...
  • leishenop
  • leishenop
  • 2016-12-18 17:18:19
  • 6039

关于JVM 中的GC Root

由于最近各种实习笔试,所以大部分的精力都放在了数据结构学习上;今天偶然间想起 JVM 的垃圾回收,试着回想了一下;发现很多东西都不是那么清晰了。 那么回到正题,看过JVM的同学应该都知道hotspo...
  • hongxiyang
  • hongxiyang
  • 2016-04-08 14:21:48
  • 2947

Java内存分配机制 垃圾回收 GC Root

这里所说的内存分配,主要指的是在堆上的分配,一般的,对象的内存分配都是在堆上进行,但现代技术也支持将对象拆成标量类型(标量类型即原子类型,表示单个值,可以是基本类型或String等),然后在栈上分配,...
  • x_i_y_u_e
  • x_i_y_u_e
  • 2016-03-15 15:59:34
  • 751

可作为GC Root的对象

在Java虚拟机中判断一个对象是否可以被回收,有一种做法叫可达性分析算法,也就是从GC Root到各个对象,如果GC Root到某个对象还有可达的引用链,那么这个对象就还不能被回收,否则就等着被收割吧...
  • sinat_36246371
  • sinat_36246371
  • 2017-06-07 19:44:13
  • 1401

[Java JVM] Hotspot GC研究- 什么是GC Root

GC RootGC Root全称是garbage collection root, 即垃圾回收的根. 回到我们的葡萄比喻上来, 也就是一串葡萄的柄. 实际上JVM中的GC Root不只一个, 也就是多...
  • lqp276
  • lqp276
  • 2016-08-27 15:17:38
  • 698

GC Root 对象有哪些

GC Root 对象有哪些   JVM垃圾回收的根对象的范围有以下几种: (1)虚拟机(JVM)栈中引用对象 (2)方法区中的类静态属性引用对象 (3)方法区中常量引用的对象(final ...
  • yaozhifeng123456
  • yaozhifeng123456
  • 2015-09-11 17:04:45
  • 1574

梳理一下JVM GC Root对象有哪些

JVM对那些没有根引用的对象进行来及回收,也就是无法从根对象中追述的对象。 JVM垃圾回收的根对象的范围有以下几种: 1、栈中引用的对象,引用是在栈帧中的本地变量表中的,真正的对象在堆中 2、方...
  • yangbutao
  • yangbutao
  • 2013-01-12 14:54:36
  • 6614

Java中可作为gc root 的对象有哪些?

Java中可作为gc root 的对象有哪些?
  • k741451
  • k741451
  • 2017-10-27 23:17:03
  • 401

GC Root的对象

在Java中,可以当做GC Root的对象有以下几种: 1、虚拟机(JVM)栈中的引用的对象 2、方法区中的类静态属性引用的对象 3、方法区中的常量引用的对象(主要指声明为final的常量值) ...
  • aptentity
  • aptentity
  • 2017-04-15 10:50:11
  • 293

GC可达性实践-内存泄露分析

GC可达性
  • wfeii
  • wfeii
  • 2017-03-08 12:45:35
  • 1014
收藏助手
不良信息举报
您举报文章:GC Root
举报原因:
原因补充:

(最多只允许输入30个字)