垃圾回收 + Java

什么是垃圾回收?
垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。 有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。

问题: 请问为什么可以确定内存堆的对象是死亡以及不会再被使用了?

方法一:引用计数法

  jvm给对象中添加一个引用计数器,每当有一个地方引用它,计数器加1,当引用失效,计数器减1,任何时候计数器为0的对象就是不可能再被使用的
方法二:可达性分析算法

  通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连(用图论的话来说,就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的。
等等

gc底层有监测机制,在一定时间范围内,如果这个对象没有被使用,就会回收。跟操作系统里面的进程回收机制差不多,会淘汰一些进程,淘汰机制有最久未使用的或者先进先出原则。

如有帮助,望采纳,这个问题最近我刚好写了一篇关于JVM的,题主你看完后会有帮助:https://blog.csdn.net/qq_40891009/article/details/118067957?spm=1001.2014.3001.5502

```