专栏首页福大大架构师每日一题2020-10-04:java中GC Root 对象有哪些?
原创

2020-10-04:java中GC Root 对象有哪些?

福哥答案2020-10-04:#福大大架构师每日一题#

简单回答:

1.局部变量。

2.静态引用的对象。

3.常量引用的对象。

4.JNI引用的对象。

中级回答:

1.虚拟机栈(栈帧中的本地变量表)中引用的对象;各个线程调用方法堆栈中使用到的参数、局部变量、临时变量等。

2.方法区中类静态属性引用的对象;java 类的引用类型静态变量。

3.方法区中常量引用的对象;比如:字符串常量池里的引用。

4.本地方法栈中 JNI(即一般说的 Native 方法)引用的对象。

5.JVM 的内部引用(class 对象、异常对象 NullPointException、OutofMemoryError,系统类加载器)。(非重点)

6.所有被同步锁(synchronized 关键)持有的对象。(非重点)

7.JVM 内部的 JMXBean、JVMTI 中注册的回调、本地代码缓存等。(非重点)

8.JVM 实现中的“临时性”对象,跨代引用的对象(在使用分代模型回收只回收部分代的对象,这个后续会细讲,先大致了解概念)。(非重点)


原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 2020-11-21:java中,什么是跨代引用?

    跨代引用常出现与 CMS 分代收集时需要使用可达性分析判断对象是否存活,JVM将堆内存分为 年轻代、老年代、永久代||元空间,跨代引用就是年轻代对象可能会引用老...

    福大大架构师每日一题
  • 2020-10-03:java中satb和tlab有什么区别?

    tlab:thread local allocation buffer,线程本地分配缓冲。

    福大大架构师每日一题
  • 2020-09-24:jvm监控系统是通过jmx做的么?

    [此答案来自知乎:](https://www.zhihu.com/question/422632973)

    福大大架构师每日一题
  • Android 中高级面试原理:热修复与插件化基础—Java与Android虚拟机

    下图是Java代码编译的详细流程(即,javac的执行过程),了解即可,一般只要知道java文件是通过javac命令编译成class文件,再通过java命令运行...

    Android技术干货分享
  • Android内存泄漏分享

    内容概述 内存泄漏和内存管理相关基础。 Android中的内存使用。 内存分析工具和实践。 以下内容不考虑非引用类型的数据,或者将其等同为对应的引用类型看待——...

    用户1172465
  • 2017年Java面试题整理

    面试是我们每个人都要经历的事情,大部分人且不止一次,这里给大家总结最新的2017年面试题,让大家在找工作时候能够事半功倍。

    Java团长
  • 内存泄露从入门到精通三部曲之常见原因与用户实践

    常见原因 1.集合类 集合类如果仅仅有添加元素的方法,而没有相应的删除机制,导致内存被占用。如果这个集合类是全局性的变量 (比如类中的静态属性,全局性的 map...

    腾讯Bugly
  • 面试被问:运行一个HelloWorld程序JVM都经历了什么

    注:如果无法通过符号引用验证,那么将会抛出一个java.lang.IncompatibleClassChangeError异常的子类:java.lang.Ill...

    田维常
  • JNI--局部引用,全局引用,弱全局引用

    aruba
  • 跟面试官聊到JVM,他99%会让你谈谈这个问题!

    但凡问到 JVM(Java 虚拟机)通常有 99% 的概率一定会问: 在 JVM 中如何判断一个对象的生死状态?

    美的让人心动

扫码关注云+社区

领取腾讯云代金券