了解JVM中的GC

Posted XeonYu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解JVM中的GC相关的知识,希望对你有一定的参考价值。

上一篇:
了解 JVM和JVM内存结构(JVM运行时数据区)

上一篇博客我们对JVM的内存结构有了一个简单的认识,我们都知道Java是有GC自动对内存进行回收的,那GC到底是怎么工作的,对象在什么时候会被回收呢?
本篇博客我们就来了解一下GC;

GC

Garbage Collector :垃圾收集器
顾名思义,就是专门收集垃圾的。

什么是垃圾

简单来讲,没有任何引用指向的对象(没有任何用处的对象),就是垃圾,要被回收掉。

怎么判断一个对象是不是垃圾

引用计数器法

简单将就是一个对象每被另一个对象所引用,则计数器+1,解除引用后-1,如果一个对象的引用计数器为0,则视为垃圾。

根可达性分析法

根:又叫做 GC roots

先来看看JVM内存模型中哪些属于GC roots

  • 虚拟机栈
  • 本地方法
  • 常量池
  • 方法区中的静态变量等

通过GC roots 根节点一直往下找,能找到的引用的对象都不是垃圾,其他的就都是垃圾。

如图所示:

以上是关于了解JVM中的GC的主要内容,如果未能解决你的问题,请参考以下文章

了解JVM中的GC

java之JVM学习--简单了解GC算法

JVM垃圾回收- GC算法:实现

JVM层GC调优(下)

JVM_GC了解(转发)

初步了解JVM第三篇(堆和GC回收算法)