notebook notebook
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)

学习笔记

啦啦啦,向太阳~
首页
  • 计算机网络
  • 计算机系统
  • 数据结构与算法
  • 计算机专业课
  • 设计模式
  • 前端 (opens new window)
  • Java 开发
  • Python 开发
  • Golang 开发
  • Git
  • 软件设计与架构
  • 大数据与分布式系统
  • 常见开发工具

    • Nginx
  • 爬虫
  • Python 数据分析
  • 数据仓库
  • 中间件

    • MySQL
    • Redis
    • Elasticsearch
    • Kafka
  • 深度学习
  • 机器学习
  • 知识图谱
  • 图神经网络
  • 应用安全
  • 渗透测试
  • Linux
  • 云原生
面试
  • 收藏
  • paper 好句
GitHub (opens new window)
  • Java开发

    • My

    • Posts

    • Java SE

    • Java 并发编程

    • JVM

      • 专栏:深入拆解 Java 虚拟机

      • 黑马程序员视频

        • 引言
        • 内存结构
        • 内存结构
          • 1. 如何判断对象可以回收
            • 1.1 引用计数法
            • 1.2 可达性分析算法
            • 1.3 ⭐️ 四种引用
    • JDBC

    • Java Web

    • Spring 与 SpringMVC

    • Spring Boot

    • Spring Cloud

    • Spring Security

    • Netty

    • MyBatis

  • Python开发

  • Golang开发

  • Git

  • 软件设计与架构

  • 大数据与分布式系统

  • 区块链

  • Nginx

  • 开发
  • Java开发
  • JVM
  • 黑马程序员视频
yubin
2023-06-01
目录

内存结构

# 1. 如何判断对象可以回收

# 1.1 引用计数法

每多一个变量引用一个对象,这个引用计数就 +1,反之则 -1。当计数为 0 时,该对象就可以回收了。

类似于 C++ 的 shared_ptr。

但这种方法无法解决循环引用的问题。

# 1.2 可达性分析算法

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

它扫描 heap 中的对象,看是否能够以 GC Root 对象为起点,沿着引用链找到该对象,如果找不到,表示可以回收。

这就可以类比“提葡萄”,我们从根上提起一串葡萄,能够提起来的就是可达的对象,提不起来的就是可以回收的。

那么哪些对象可以作为 GC Root 呢?这可以通过工具 Eclipse Memory Analyzer 看到。

原视频这里看的有点晕。

# 1.3 ⭐️ 四种引用

// 这里需要看书

编辑 (opens new window)
上次更新: 2023/07/06, 03:12:41
内存结构
JDBC 上手

← 内存结构 JDBC 上手→

最近更新
01
Deep Reinforcement Learning
10-03
02
误删数据后怎么办
04-06
03
MySQL 一主多从
03-22
更多文章>
Theme by Vdoing | Copyright © 2021-2024 yubincloud | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×