【JVM 垃圾回收 05】

发布时间 2023-06-29 11:32:50作者: 尘封~~

什么是垃圾:垃圾指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾

一个程序进程就对应一个运行时数据区,程序进程执行结束后运行时数据区也就没有了

一、垃圾回收相关算法

1、标记阶段

1)如何判断对象是否存活

  • 在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中那些对象是存活对象,那些是已经死亡的对象。只有被标记为已经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占的内存空间,因此这个过程我们可以称为垃圾标记阶段
  • 那么在jvm中究竟是如何标记一个死亡对象呢?简单来说,当一个对象已经不再被任何的存活对象继续引用时,就可以宣判为已经死亡
  • 判断对象存活一般有两种方式:引用计数算法和可达性分析算法

==>存在GC行为的只有堆和方法区,主要GC是堆