美文网首页
二、GC ROOT

二、GC ROOT

作者: UUID | 来源:发表于2018-07-18 16:57 被阅读33次

jvm在判断对象是否还有用的时候,通常会从一些常见的地方开始进行搜索,只要对象不能从这些地方被引用到,就判断这些没被引用到的对象就是需要回收的,这些常见的地方就被成为GC 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持有"的了。

其实,对于gc root,有个了解就可以。

相关文章

  • 二、GC ROOT

    jvm在判断对象是否还有用的时候,通常会从一些常见的地方开始进行搜索,只要对象不能从这些地方被引用到,就判断这些没...

  • Java常见的GC Root

    我们知道Java 进行GC的时候会从GC root进行可达性判断,常见的GC Root有如下: 通过System ...

  • GC Root:

    www.jianshu.com/p/5db05db4f5ab www.jianshu.com/p/6ab2a0f7...

  • gc root

    一、oopMap oop (ordinary object pointer) 普通对象指针,oopmap就是存放这...

  • 什么是GC ROOT?有哪些GC ROOT?

    上⾯提到的标记的算法,怎么标记⼀个对象是否存活?简单的通过引⽤计数法,给对象设置⼀个引⽤计数器,每当有⼀个地⽅引⽤...

  • Gc Root对象

    1. gc root对象有那些 1.1解释 常说的GC(Garbage Collector) roots,特指的是...

  • 垃圾回收

    1、引用计数器 2、可达性分析 GC Root: Java语言中,可做为GC Root的对象有以下几种: 虚拟机栈...

  • GCRoots

    转载Java中什么样的对象才能作为gc root,gc roots有哪些呢? java的gc为什么要分代? 所谓"...

  • G1 SATB和Incremental Update算法的理解

    着色标记 我们都知道cms gc 和g1 gc 的算法都是通过对gc root 进行遍历,并进行三颜色标记,具体标...

  • Java中的局部变量与GC root

    明确GC roots 我们知道,java中决定一个对象是不是会被回收要看它是不是还被gc root引用,gc ro...

网友评论

      本文标题:二、GC ROOT

      本文链接:https://www.haomeiwen.com/subject/ohfapftx.html