千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

首页 视频教程 培训课程 师资团队 技术干货 常见问题 面试题 职场就业 零基础学Java 行业资讯
【热点话题】 Java技术干货 Java学习教程 Java学习笔记 Java面试题 Java培训问答 Java培训机构哪些好 Java职场就业
当前位置:Java培训  >  java技术干货  >  千锋Java分享:JVM垃圾回收机制之对象回收算法

千锋Java分享:JVM垃圾回收机制之对象回收算法

来源:千锋教育
发布人:付老师
时间: 2019-04-26 16:07:00 1556266020

  前言

  本文由千锋Java培训老师分享!在前面的文章中,介绍了JVM内存模型分为:堆区、虚拟机栈、方法区、本地方法区和程序计数器,其中堆区是JVM中最大的一块内存区域,在Java中的所有对象实例都保存在此区域,它能被所有线程共享。

  在Java中还有一个重要的机制:GC(垃圾收集器),堆是GC管理的主要区域,本文会带大家了解GC机制。

  GC的简介

  GC(Garbage Collection)垃圾收集机制是Java一个重要特性。不同于C/C++语言需要程序员自己管理内存的回收,而且这样做往往容易出错,导致内存泄漏等严重问题。

  Java程序员不用编写回收内存的代码,因为Java有GC机制,它是一个特殊的后台线程,该线程对JVM中的内存进行标记,并确定哪些需要回收,再通过一定的回收策略自动回收内存,它在后台一直运行,保证JVM不会出现内存溢出的问题。

  对象回收的算法

  那么GC是如何判断某个对象的内存需要回收呢?GC需要判断该对象已死,也就是不再被调用,如何判断对象不再被调用呢?

  这里有两种算法:

  1、引用计数算法

  2、可达性分析算法

  引用计数算法

  该算法给每个对象分配一个计数器,当有引用指向这个对象时,计数器加1,当指向该对象的引用失效时,计数器减一。最后如果该对象的计数器为0时,java垃圾回收器会认为该对象是可回收的。

  优点:

  1、实时性高,只要对象计数器为0就进行回收,不用等到内存不足的时候。

  2、在垃圾回收过程中,应用无需挂起。

  3、更新对象的计数器时,只是影响到该对象,不会扫描全部对象。

  缺点:

  1、每次引用对象时,都会更新计数器,有时间消耗

  2、不能解决循环引用问题

  那什么是循环引用问题呢?我们看下面这段代码:

QQ截图20190426160541

  上面的a、b两个对象虽然都赋值为null,但是都不能回收,因为存在循环引用,它们的计数器不为0.

  可达性分析算法

  该算法通过一种被称作“GC Root”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连时,则证明此对象时不可用的。

  如下图:

图片2

  在Java语言中,可作为GC Roots对象包括下面几种:

  1)虚拟机栈中引用的对象

  2)方法区中类静态属性引用的对象

  3)方法区常量池中引用的对象

  3)本地方法栈中JNI引用的对象

  再回头看前面这段代码,虽然a和b对象的引用计数都不为0,但是它们作为GC Root对象,最后都赋值为null,导致引用不可达,这样两个对象都是可以被回收的。

图片1

  总结

  本文千锋Java培训机构讲师带我们学习了JVM中的垃圾收集(GC)机制,GC是一个在后台持续运行的线程,帮助我们回收JVM堆中的对象内存,保证JVM不会内存溢出。

  如何判断对象内存需要回收,有两个算法:引用计数算法和可达性分析算法。

  引用计数算法通过判断对象的引用计数为0,就标记该对象内存可以回收,但是不能很好的解决循环引用问题;可达性分析算法通过GC Root向下搜索,如果引用链相连则对象可达,否则标记对象不可达,可以进行回收,这种算法能很好解决对象循环引用问题。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

最新文章NEW

相关推荐HOT

更多>>
开班信息
北京校区
  • 北京校区
  • 大连校区
  • 广州校区
  • 成都校区
  • 杭州校区
  • 长沙校区
  • 合肥校区
  • 南京校区
  • 上海校区
  • 深圳校区
  • 武汉校区
  • 郑州校区
  • 西安校区
  • 青岛校区
  • 重庆校区
  • 太原校区
  • 沈阳校区
  • 南昌校区
  • 哈尔滨校区

14天品质课程免费学

10年以上业内强师带你蜕变精英

提交领取