JVM中具体是如何实现垃圾回收的机制?

2026-05-27 17:200阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3500个文字,预计阅读时间需要14分钟。

JVM中具体是如何实现垃圾回收的机制?

1. 如何判断对象可以被回收? - 引用计数法:定义:只要有一个对象引用,对象就不会被回收。引用计数+1,引用计数-1。

2. 引用计数法: - 定义:只有当一个对象被一个变量引用时,引用计数才+1;如果变量不再引用这个对象,引用计数才-1。

3. 定义: - 只有一个对象被变量引用,引用计数+1。 - 如果变量不再引用对象,引用计数-1。

一、如何判断对象可以可以被回收 1.1 引用计数法

 定义:只要一个对象被变量所引用,则该对象计数就+1,若被引用了两次,则它的引用计数就变为2,如果某一个变量不再引用它了,则它的引用计数就减一,当该对象的引用变为0的时候就表示没有变量引用它了,该对象就可以被当作垃圾回收了。

 弊端:当两个对象循环引用时候,但是又没有被别的变量引用,并且这两个对象不在有实用价值,这时,垃圾回收并不能够回收这两个对象,可能导致內存溢出。

1.2 可达性分析算法

 根对象:那些肯定不能被当成垃圾回收的对象

 定义:在垃圾回收之前,先对堆中的所有对象进行一次扫描,判断每一个对象是否被根对象直接或者间接的引用,如果是,则不能被回收,反之则可以被当成垃圾回收

 Java虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象

 扫描堆中的对象,看是否能够沿着GC Root对象(一系列对象)为起点的引用链找到该对象,找不到,表示可以回收

 哪些对象可以作为GC Root ?

  虚拟机栈(栈帧中的本地变量表)中引用的对象。
  方法区中类静态属性引用的对象。

阅读全文

本文共计3500个文字,预计阅读时间需要14分钟。

JVM中具体是如何实现垃圾回收的机制?

1. 如何判断对象可以被回收? - 引用计数法:定义:只要有一个对象引用,对象就不会被回收。引用计数+1,引用计数-1。

2. 引用计数法: - 定义:只有当一个对象被一个变量引用时,引用计数才+1;如果变量不再引用这个对象,引用计数才-1。

3. 定义: - 只有一个对象被变量引用,引用计数+1。 - 如果变量不再引用对象,引用计数-1。

一、如何判断对象可以可以被回收 1.1 引用计数法

 定义:只要一个对象被变量所引用,则该对象计数就+1,若被引用了两次,则它的引用计数就变为2,如果某一个变量不再引用它了,则它的引用计数就减一,当该对象的引用变为0的时候就表示没有变量引用它了,该对象就可以被当作垃圾回收了。

 弊端:当两个对象循环引用时候,但是又没有被别的变量引用,并且这两个对象不在有实用价值,这时,垃圾回收并不能够回收这两个对象,可能导致內存溢出。

1.2 可达性分析算法

 根对象:那些肯定不能被当成垃圾回收的对象

 定义:在垃圾回收之前,先对堆中的所有对象进行一次扫描,判断每一个对象是否被根对象直接或者间接的引用,如果是,则不能被回收,反之则可以被当成垃圾回收

 Java虚拟机中的垃圾回收器采用可达性分析来探索所有存活的对象

 扫描堆中的对象,看是否能够沿着GC Root对象(一系列对象)为起点的引用链找到该对象,找不到,表示可以回收

 哪些对象可以作为GC Root ?

  虚拟机栈(栈帧中的本地变量表)中引用的对象。
  方法区中类静态属性引用的对象。

阅读全文