10、了解JVM判断对象可回收的神秘法则!

10.1、垃圾回收触发时机?

在我们之前的学习中,我们已经了解到,当我们的系统在运行过程中创建对象时,这些对象通常会被优先分配在所谓的“新生代”内存区域,如下图所示。
在这里插入图片描述

在新生代中,当对象数量逐渐增多,接近填满整个空间时,会触发垃圾回收机制。这个机制的作用是回收那些不再被引用的对象,从而释放内存空间。

需要特别注意的是,这是新生代垃圾回收的一个关键触发时机。如下图。
在这里插入图片描述

那么本文就来针对这个过程,再次梳理其中的一些细节,看看触发垃圾回收的时候,到底是按照一个什么样的规则来回收垃圾对象的。

10.2、了解哪些引用导致对象无法被清理

首先第一个问题,一旦新生代快满了,那么垃圾回收的时候,到底哪些对象是能回收的,哪些对象是不能回收的呢?
这个问题非常好解释,JVM中使用了一种可达性分析算法来判定哪些对象是可以被回收的,哪些对象是不可以被回收的。
这个算法的意思,就是说对每个对象,都分析一下有谁在引用他,然后一层一层往上去判断,看是否有一个GC Roots。
这句话相当的抽象,是不是?

首先,我们来探讨一个关键问题:当新生代区域即将填满时&

相关推荐

  1. JVM 如何判断对象是否回收

    2024-04-26 09:10:03       35 阅读
  2. JVMGC如何判断对象可以被回收

    2024-04-26 09:10:03       39 阅读
  3. 如何判断对象可以被回收

    2024-04-26 09:10:03       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-26 09:10:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-26 09:10:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-26 09:10:03       87 阅读
  4. Python语言-面向对象

    2024-04-26 09:10:03       96 阅读

热门阅读

  1. 设计模式-行为型模式-责任链模式

    2024-04-26 09:10:03       36 阅读
  2. git手册

    git手册

    2024-04-26 09:10:03      24 阅读
  3. 开发Chrome插件入门

    2024-04-26 09:10:03       38 阅读
  4. TypeError: Unknown file extension “.ts“

    2024-04-26 09:10:03       28 阅读
  5. Python 语音识别系列-实战学习之初识语音识别

    2024-04-26 09:10:03       33 阅读
  6. 热力膨胀阀的调节步骤

    2024-04-26 09:10:03       29 阅读