本文主要是介绍JVM判断对象是否存活方法 以及 GC root集合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 引用计数
- 可达性分析
- Java中的GC root:
引用计数
- 优点:实现简单
- 缺点:难以解决对象循环引用的问题
可达性分析
-
对象是否与 GCroot 可达来判断对象将来是否会被使用
基于图论观点:如果图的连通分量大于 GC root数量,那么就存在不可达的对象,不可达对象是Java编码用户 不可见,jvm运行时不可见的对象
Java中的GC root:
-
虚拟机栈(栈帧中的本地变量表)中的对象:方法堆栈用的参数,局部变量,临时变量等
-
方法区中的 类静态属性引用的变量 static
-
方法区中的 常量引用的对象:字符串常量池(String table)的引用
-
Java虚拟机内部的引用:数据类型对应的class对象,常驻的异常对象,系统加载器等
-
所有被同步锁(synchronized关键字)持有的对象
-
反应Java虚拟机内部情况的 JMXBean,JVMTI中注册的回调,本地代码缓存等
-
不同内存区域,GC root标准不同导致的一些 临时性 加入的的对象等
这篇关于JVM判断对象是否存活方法 以及 GC root集合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!