HarmonyOS开发,A持有B,B引用A的场景会不会导致内存泄漏,看这里!

server/2025/3/28 12:59:39/

问题 :A持有B,B引用A的场景会不会导致内存泄漏?

答案 :方舟虚拟机的内存管理和GC采用的是根可达算法,根可达算法可以解决循环引用问题,不会导致A引用B,B引用A的内存泄漏。

根可达算法原理

根可达算法以一系列被称为 “根对象”(如栈中的局部变量、静态变量等)作为起始点,从这些根对象开始向下搜索,能够被搜索到的对象被认为是可达对象,而那些无法被搜索到的对象则被判定为不可达对象,会在垃圾回收时被清理。所以,即使存在对象之间的循环引用,只要它们都不可达(即没有根对象能引用到它们),就会被回收。

示例代码:

1. 定义类 A :

class A {b: B | null = null;constructor() {console.log(TEST_TAG, 'A 实例被创建');}setB(b: B) {this.b = b;}
}

2. 定义类 B :

class B {a: A | null = null;constructor() {console.log(TEST_TAG, 'B 实例被创建');}setA(a: A) {this.a = a;}
}

3. 主函数调用

@Entry
@Component
struct MyTestP

http://www.ppmy.cn/server/176863.html

相关文章

bootstrap介绍(前端框架)(提供超过40种可复用组件,从导航栏到轮播图,从卡片到弹窗)bootstrap框架

文章目录 Bootstrap框架全解析起源与发展核心特性与优势响应式设计组件丰富度一致性与兼容性 栅格系统深度解析栅格系统工作原理断点设置与响应式策略 组件系统导航组件表单系统 自定义与扩展SASS变量系统构建系统优化 性能优化策略按需加载减少嵌套层级 实践案例:电…

引领能源转型,赋能智慧高效运维——微电网智能管理平台

销售工程师 王孟春 13524471462 背景需求 双碳”目标 重视能源消费侧节能减碳 碳排放权、碳资产、碳交易 碳关税。 电力市场 改革 电价改革、峰谷价差扩大 容改需&“两部制”适用范围 虚拟电厂。 市场、行业发展 光伏建设成本降低 储能设备成本大幅下降 新能源汽车快速…

简要分析IPPROTO_UDP参数

IPPROTO_UDP时操作系统或网络编程中定义的一个 协议号常量&#xff0c;用于标识 用户数据报协议&#xff08;UDP&#xff09;。其核心作用是 在传输层指定使用UDP协议&#xff0c;支持无连接、不可靠但高效的数据传输 一、定义与值 头文件&#xff1a;定义在 <netinet/in.h&…

构建下一代AI Agent:自动化开发与行业落地全解析

1. 下一代AI Agent&#xff1a;概念与核心能力 核心能力描述技术支撑应用价值自主性独立规划与执行任务&#xff0c;无需持续人工干预决策树、强化学习、目标导向规划减少人工干预&#xff0c;提高任务执行效率决策能力评估多种方案并选择最优解决方案贝叶斯决策、多目标优化、…

华为IPD研发管理体系的3大核心框架解析

开篇&#xff1a;从“偶然成功”到“持续领先”&#xff0c;华为IPD的蜕变密码 1999年&#xff0c;华为面临研发周期长、产品质量不稳定、过度依赖“英雄主义”的困境&#xff0c;甚至被内部称为“工程师的乐园&#xff0c;客户的噩梦”。引入IBM的IPD&#xff08;集成产品开发…

我的ffmpeg爬坑之路(3)

3. 使用静态构建版本&#xff08;免安装&#xff09;‌ 从官方静态构建页面下载预编译的二进制文件&#xff0c;解压后直接使用&#xff1a; # 下载&#xff08;替换最新版本号&#xff09; wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar…

小科普《DNS服务器》

DNS服务器详解 1. 定义与核心作用 DNS&#xff08;域名系统&#xff09;服务器是互联网的核心基础设施&#xff0c;负责将人类可读的域名&#xff08;如www.example.com&#xff09;转换为机器可识别的IP地址&#xff08;如192.0.2.1&#xff09;&#xff0c;从而实现设备间的…

开发过程中的网络协议

一、网络通信中的分层架构 二、常见的协议 三、HTTP和HTTPS 四、HTTPS中的SSL / TLS握手 五、跨域及解决办法