至今为止,我基本上发现网上没有几个博客说的很明白的,今天我在这里斗胆总结一下,各位大佬,如有错误,还望指责 ^ _ ^

  • 首先那肯定还得是看看概念了,在JVM中,什么可以作为GC Root呢?

    • 虚拟机栈(栈帧中的本地变量表)中引用的对象。  
    • 方法区中类静态属性引用的对象。
    • 方法区中常量引用的对象。
    • 本地方法栈中JNI(即一般说的Native方法)引用的对象。
  • 如果光看概念,我**也不知道指的是个啥?所以举个栗子吧:
#此处是段伪代码

class v {
b,c
} class b{
d
} class d{
c
} class c{
b
} 1. fun(...){
. v a = new A;
. a.b = new B;
. a.c = new C;
. a.b.d = new D;
. a.b.d.c = a.c;
. a.c.b = a.b;
. a.c = null;
. a.b = null;
. ...............
. }
  • 接下来我会画图解释如上代码:

此时可以理解为,针对对象A(GC ROOT根),BCD对象不可达。

  • 咱们口中常说的垃圾回收啊,都在红圈区域,即是回收我们用new,分配在堆中的对象;
  • 而常量、全局变量、静态变量、以及帧栈中的局部变量,都是存储在蓝圈区域的

  • 小结:

1》通常情况下,堆中的对象可以通过方法区中静态变量、常量、全局变量以及帧栈中的局部变量直接或间接引用访问;

2》但是如果堆中的对象,没有任何引用可以直接或间接访问的话,这个对象就是可以被回收的,所以我们也可以为非堆区域内变量及时赋NULL,以减少【minor gc】频率。

【JVM】GC 可达性分析中哪些算是GC ROOT?的更多相关文章

  1. JVM 基础:回收哪些内存/对象 引用计数算法 可达性分析算法 finalize()方法 HotSpot实现分析

    转自:https://blog.csdn.net/tjiyu/article/details/53982412 1-1.为什么需要了解垃圾回收 目前内存的动态分配与内存回收技术已经相当成熟,但为什么还 ...

  2. 【转】gc日志分析工具

    性能测试排查定位问题,分析调优过程中,会遇到要分析gc日志,人肉分析gc日志有时比较困难,相关图形化或命令行工具可以有效地帮助辅助分析. Gc日志参数 通过在tomcat启动脚本中添加相关参数生成gc ...

  3. JVM小册(1)------jstat和Parallel GC日志

    JVM小册(1)------jstat和Parallel GC日志 一. 背景 在生产环境中,有时候会遇到OOM的情况,抛开Arthas 等比较成熟的工具以外,我们可以使用java 提供的jatat和 ...

  4. JVM内存问题分析

    JVM运行时数据区: 1.方法区:类信息(类名,访问修饰符.字段描述.方法 描述等).常量.静态变量.即时编译后的class文件等.在GC时用永久代来实现方法区 2.运行时常量池:是方法区的一部分,存 ...

  5. JVM性能分析 | 一次生产系统Full GC问题分析与排查总结

    一次生产系统Full GC问题分析与排查总结 背景 最近某线上业务系统生产环境频频CPU使用率过低,频繁告警,通过重启可以缓解,但是过了一段时间又会继续预警,线上两个服务节点相继出现CPU资源紧张,导 ...

  6. JVM中垃圾回收机制如何判断是否死亡?详解引用计数法和可达性分析 !

    因为热爱,所以坚持. 文章下方有本文参考电子书和视频的下载地址哦~ 这节我们主要讲垃圾收集的一些基本概念,先了解垃圾收集是什么.然后触发条件是什么.最后虚拟机如何判断对象是否死亡. 一.前言   我们 ...

  7. Java中9种常见的CMS GC问题分析与解决

    1. 写在前面 | 本文主要针对 Hotspot VM 中"CMS + ParNew"组合的一些使用场景进行总结.重点通过部分源码对根因进行分析以及对排查方法进行总结,排查过程会省 ...

  8. JVM调优——之CMS GC日志分析

    最近在学习JVM和GC调优,今天总结下CMS的一些特点和要点,让我们先简单的看下整个堆年轻代和年老代的垃圾收集器组合(以下配合java8完美支持,其他版本可能稍有不同),其中标红线的则是我们今天要着重 ...

  9. jvm的GC日志分析 [转]

      jvm的GC日志分析 标签: jvm内存javagc 2015-06-22 16:37 1566人阅读 评论(1) 收藏 举报  分类: Java(4)  JVM的GC日志的主要参数包括如下几个: ...

随机推荐

  1. java 之 javaBean

    什么是JavaBean? JavaBean是特殊的Java类,使用J ava语言书写,并且遵守JavaBean API规范. JavaBean与其它Java类相比而言独一无二的特征: 提供一个默认的无 ...

  2. java 之 enum(枚举)

    推荐博客 http://blog.csdn.net/javazejian/article/details/71333103

  3. AIX如何点亮HBA卡

    不要选中分区,选择系统管理下的服务器即可 LED状态----->启动Advanced System Management(ASM) UserID:  admin Password:admin S ...

  4. cookie ,session 和localStorage的区别详解

    2019独角兽企业重金招聘Python工程师标准>>> cookie ,session 和localStorage的区别详解 博客分类: js 当你在浏览网站的时候,WEB 服务器会 ...

  5. Ngxin 开启CDN 日志获取不了真实IP的解决办法。

    nginx配置里面在http{ 后加入如下两行代码即可: set_real_ip_from 0.0.0.0/0;real_ip_header X-Forwarded-For; 重启nginx生效. 注 ...

  6. python selenium(常用关键字)

    1.文本按钮操作相关: send_keys()输入文本 from selenium import webdriver import time dr = webdriver.Chrome() dr.ge ...

  7. RocketMQ-架构篇

    RocketMQ-架构篇 1.Broker Broker是RocketMQ的服务端组件之一,所有消息存储在Broker上,所有的投递.消费请求也都由Broker进行处理.Broker是有状态的应用,本 ...

  8. 关于使用ffmpeg的一些牢骚

    一.啰嗦几句 好几年不写博客了,一是工作计算机都加密了没法编辑提交:二是各种语言混用,什么都会就是什么都不会,delphi.c#.vb.python.c++要说我精通啥,啥也不精,所以不敢乱写. 最近 ...

  9. Java 函数式接口

    目录 Java 函数式接口 1. 函数式接口 1.1 概念 1.2 格式 1.3 函数式接口的使用 2. 函数式编程 2.1 Lambda的延迟执行 性能浪费的日志案例 使用Lambda表达式的优化 ...

  10. Struts Scan工具的使用

    前言 最近看了关于Struts2漏洞,参考文章 https://www.freebuf.com/vuls/168609.html,这篇文章里对Struts2的漏洞及原理进行了详细的讲解.自己也从网上找 ...