JVM:垃圾标记阶段算法之引用计数法
Java JVM About 428 words垃圾标记阶段
对象存活判断。
引用计数法
Reference Counting。
对每个对象保存一个整型的引用计数器属性。用于记录对象被引用的情况。
对于一个对象只要有任何一个对象引用了A,则A的引用计数器就加1;当引用失效时,引用计数器就减1;只要对象A的引用计数器的值为0,即表示对象A不可能再被使用,可进行回收。
优点
实现简单,垃圾对象便于辨识;判定效率高,回收没有延迟性。
缺点
- 它需要单独的字段存储计数器,这样的做法增加了存储空间的开销。
- 每次值都要更新计数器,伴随着加注和减法操作,这增加了时间开销的
- 引用计数器有一个严重的问题,即无法处理循环引用的情况。这是一条致命缺陷,导致在
Java的垃圾回收器中没有使用这类算法。
补充
Python同时支持引用计数和垃圾收集机制。
Python解决循环引用问题:
- 手动解除:在合适的时机,解除引用关系。
- 使用弱引用
weakref,weakref是Python提供的标准库,旨在解决循环引用。
Views: 2,858 · Posted: 2022-05-23
———         Thanks for Reading         ———
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Prev Post
Next Post
Today In History
- ECharts 解决 Sankey 桑基图没有动画问题 Views: 19 · Posted: 2026-04-08
- Telepresence 开发中的常用命令 Views: 2,400 · Posted: 2023-04-08
- Java 中的锁 ReentrantReadWriteLock 读写锁 Views: 2,893 · Posted: 2021-04-08
- Spring Boot 打包本地 jar 包到 war 包中 Views: 2,937 · Posted: 2020-04-08
- Android adb 命令 Views: 6,893 · Posted: 2019-04-08
- JavaScript 页面切换后更改标题 Views: 2,769 · Posted: 2019-04-08
- IDEA 滚轮调节字体大小 Views: 4,432 · Posted: 2019-04-08
- IDEA 去除 Unchecked cast from Object to 提示 Views: 5,539 · Posted: 2019-04-08
- Java 按字典顺序排序请求参数 Views: 7,249 · Posted: 2019-04-08
- Java 储存相同 key 的 map Views: 4,955 · Posted: 2019-04-08
- Java 测试迭代集合耗时 Views: 4,932 · Posted: 2019-04-08
- The temporary upload location [xxxRoot] is not valid Views: 4,342 · Posted: 2019-04-08
- Spring Boot Undertow 上传文件后没有可读权限 Views: 7,805 · Posted: 2019-04-08
- Java8 @FunctionalInterface 注解 Views: 3,138 · Posted: 2019-04-08
- Vue-cli+webpack 配置接口代理解决跨域问题 Views: 4,200 · Posted: 2019-04-08
- PHP 序列化与反序列化 Views: 3,635 · Posted: 2019-04-08
- PHP 关闭 X-Powered-By 信息 Views: 3,003 · Posted: 2019-04-08
- PHP编译安装redis扩展 Views: 3,659 · Posted: 2019-04-08
- PHP Markdown 解析器 Views: 4,154 · Posted: 2019-04-08
- PHP查看配置文件所在位置 Views: 3,455 · Posted: 2019-04-08
- PHP 压缩 HTML 代码 Views: 3,672 · Posted: 2019-04-08
- PhpStorm 设置大括号不换行 Views: 10,034 · Posted: 2019-04-08
- PHP 时间加减 Views: 4,007 · Posted: 2019-04-08
- PHP curl 报错:SSL connect error Views: 4,711 · Posted: 2019-04-08
- PHP 字段对应 MySQL 字段 Views: 3,345 · Posted: 2019-04-08
- ThinkPHP5 设置 Redis 长连接 Views: 7,026 · Posted: 2019-04-08
- ThinkPHP5 设置数据库长连接 Views: 6,898 · Posted: 2019-04-08
- PHP 生成重复固定随机数邀请码 Views: 4,370 · Posted: 2019-04-08
- PHP 使用 json_encode 格式化下标不为 0 开始的数组会转为对象 Views: 4,619 · Posted: 2019-04-08
- PHP 获取毫秒值时间戳 Views: 5,618 · Posted: 2019-04-08
- PHP 设置 json_encode 不转义中文 Views: 4,189 · Posted: 2019-04-08
- PHP 判断函数、类、方法、属性、数组中的 key 是否存在 Views: 6,240 · Posted: 2019-04-08
- Redis 提示没有权限 Views: 6,190 · Posted: 2019-04-08
- Redis 线上禁用命令 Views: 4,264 · Posted: 2019-04-08
- Redis 最大内存策略 Views: 3,032 · Posted: 2019-04-08
- Redis 内存信息 Views: 3,875 · Posted: 2019-04-08
- Redis 使用 bigkeys 命令查找大 key Views: 6,765 · Posted: 2019-04-08
- Redis 运行统计信息 Views: 3,538 · Posted: 2019-04-08
- Redis 实现统计在线人数、每日签到功能 Views: 7,129 · Posted: 2019-04-08
- Redis 使用 HyperLogLog 统计独立 IP 数 Views: 4,923 · Posted: 2019-04-08
- Redis 监控 monitor Views: 4,399 · Posted: 2019-04-08
- Redis 过期时间问题 Views: 3,817 · Posted: 2019-04-08
- Redis 查看连接数 Views: 4,709 · Posted: 2019-04-08
Browsing
Refresh
Loading...
- Java 查看容器信息的几种方式 Views: 2883
- CSS 使用 flex-shrink 0 解决 flex 1 布局中元素设置的高度不生效问题 Views: 653
- Spring Boot MyBatis-Plus apply 自定义 where 条件 Views: 2733
- Spring Boot 单元测试 @MockBean 模拟依赖注入 Views: 4071
- JavaScript 页面切换后更改标题 Views: 2769
- 设计模式之解释器模式 Views: 4912
- 算法的时间复杂度和空间复杂度 Views: 2580
- 走进 Rust:枚举 Views: 3802
- PostgreSQL pg_stat_database 统计数据库相关信息 Views: 1486
- PostgreSQL 修改数据库拥有者 Views: 5896