JVM入门教程:如何深入理解GC(下下篇)?

2026-05-19 18:090阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

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

JVM入门教程:如何深入理解GC(下下篇)?

垃圾收集主要针对堆和方法区进行;程序计数器、虚拟机栈和本地方法栈属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾收集。

垃圾收集主要是针对堆和方法区进行;程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于> 线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。

GC - Java垃圾回收机制 判断一个对象是否可被回收 1. 引用计数算法

给对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。

这个方法实现简单,效率高,但是目前主流的虚拟机中并没有选择这个算法来管理内存,其最主要的原因是它很难解决对象之间相互循环引用的问题。 所谓对象之间的相互引用问题,如下面代码所示:除了对象 objA 和 objB 相互引用着对方之外,这两个对象之间再无任何引用。但是他们因为互相引用对方,导致它们的引用计数器都不为 0,于是引用计数算法无法通知 GC 回收器回收他们。

正因为循环引用的存在,因此 Java 虚拟机不使用引用计数算法

阅读全文

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

JVM入门教程:如何深入理解GC(下下篇)?

垃圾收集主要针对堆和方法区进行;程序计数器、虚拟机栈和本地方法栈属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾收集。

垃圾收集主要是针对堆和方法区进行;程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于> 线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。

GC - Java垃圾回收机制 判断一个对象是否可被回收 1. 引用计数算法

给对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。

这个方法实现简单,效率高,但是目前主流的虚拟机中并没有选择这个算法来管理内存,其最主要的原因是它很难解决对象之间相互循环引用的问题。 所谓对象之间的相互引用问题,如下面代码所示:除了对象 objA 和 objB 相互引用着对方之外,这两个对象之间再无任何引用。但是他们因为互相引用对方,导致它们的引用计数器都不为 0,于是引用计数算法无法通知 GC 回收器回收他们。

正因为循环引用的存在,因此 Java 虚拟机不使用引用计数算法

阅读全文