HarmonyOS 关于内存管理

HarmonyOS的内存管理方式是通过引用计数来管理的吗?因为发现如下代码,某些场景会导SearchResultContent释放不掉。

/* 更新页面展示状态*/
@Builder
private layoutPageIfNeed() {
  Column() {
    if (this.vm.pageState == SearchPageDisplayState.Entry) {
      SearchEntryContent({ root: this.vm, entry: this.vm.entry })
    } else if (this.vm.pageState == SearchPageDisplayState.Think) {
      SearchThinkContent({ vm: this.vm })
    } else {
      SearchResultContent({ vm: this.vm })
    }
  }.layoutWeight(1)
  .transition(TransitionEffect.translate({
    y: (this.vm.param.geometryId && this.vm.param.searchBarBottomOffsetY) ? this.vm.param.searchBarBottomOffsetY : 0
  }))
}

自测发现某些场景下即使if不满足,对应的ui在内存中也没有释放掉,定位到SearchResultSubContent内的如下代码中打印this,会输出上一次创建的地址。

// 定义滚动事件
private setupScrollInteractive() {
  if (this.config.adapter.target) {
    this.config.adapter.target.scroll = param => {
      console.log('tag' + this.config.adapter)
      if (param.cardType == SearchInformationType.YICHE_VIDEO ||
        param.cardType == SearchInformationType.YICHE_NUMBER_VIDEO ||
        param.cardType == SearchInformationType.VIDEO_RECOMMEND) {
        console.log('当前偏移量' + this.currentOffsetY + ' ==== ' + param.offsetY)
        this.listScroller.scrollTo({
          xOffset: 0,
          yOffset: (param.offsetY ?? 0) + this.currentOffsetY,
          animation: true
        })
      }
    }
  }
}

页面结构从父到子:根页面 -> SearchResultContent -> SearchResultSubContent。

现象:根页面中通过if已经释放掉了SearchResultContent,但是下次再创建SearchResultContent时,在SearchResultSubContent的callback内打印了上一次的对象地址。

HarmonyOS
3天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

HarmonyOS有自己的GC机制会自动处理,变量在内存中不使用后,一般不会立即释放,请参考如下对GC的介绍:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/gc-introduction-V5

https://blog.csdn.net/HarmonyOSDev/article/details/125886382

分享
微博
QQ
微信
回复
3天前
相关问题
ArkTS语言内存管理,会自己管理
2145浏览 • 1回复 待解决
HarmonyOS 关于状态管理
180浏览 • 1回复 待解决
HarmonyOS 内存泄漏检测
25浏览 • 1回复 待解决
HarmonyOS napi共享内存指导
8浏览 • 1回复 待解决
HarmonyOS 怎么检查内存泄漏
558浏览 • 1回复 待解决
HarmonyOS webview内存占用问题
8浏览 • 1回复 待解决
HarmonyOS dump本地内存的api
13浏览 • 1回复 待解决
HarmonyOS 运行报错,内存不足
609浏览 • 1回复 待解决
提问
该提问已有0人参与 ,帮助了0人