您当前的位置: 首页 >  jvm

java持续实践

暂无认证

  • 4浏览

    0关注

    746博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

JVM垃圾回收的时候如何确定垃圾?什么是GC Roots?

java持续实践 发布时间:2020-01-07 21:58:15 ,浏览量:4

什么是垃圾: 简单的说, 内存中已经不再被使用的空间,就是垃圾. 例如一个对象指向为null了 Person p1 = null , 那么就可以将p1对象进行回收.

要进行垃圾回收, 怎么判断一个对象是否可以被回收?

  1. 引用计数法 (了解)
  2. GCRoot (枚举根节点可达性分析(根搜索路径)) 把GC Root对象开始作为起点, 来进行链路的扫描和访问, 如果能够可达就认为是活跃的,就不能回收,如果不能访问到, 那就不可达, 链条的起点必须是GCRoot对象, 如下图左图为引用可达对象, 因为是从GCRoots开始的. 而有图为GC不可达, 因为不是从GCRoot开始的, 即使它内部的object5关联着object6和7. 可以成为GCRoot的对象

1.虚拟机栈(栈帧中的局部变量区,也叫局部变量表)中引用的对象 2.方法区中静态类属性引用的对象(使用static修饰的对象) 3.方法区常量引用的对象.(使用final修饰的对象) 4.本地方法栈中JNI(Native方法)引用的对象. (使用Native修饰的方法, 线程中用的多.)

关注
打赏
1658054974
查看更多评论
立即登录/注册

微信扫码登录

0.3581s