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
赞
收藏 0
回答 1
待解决
相关问题
ArkTS语言内存管理,会自己管理吗
2145浏览 • 1回复 待解决
HarmonyOS 关于状态管理
180浏览 • 1回复 待解决
如何利用HarmonyOS NEXT的内存管理机制来减少内存泄漏和提高内存使用效率?
634浏览 • 0回复 待解决
如何在HarmonyOS中实现高效的内存管理?
179浏览 • 0回复 待解决
HarmonyOS 关于hmosworld Navigation一些管理问题的疑问
23浏览 • 1回复 待解决
HarmonyOS 有没有关于C++层的内存分析检测工具
83浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT项目中进行UI集成和内存管理?
147浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在ArkTS中有效管理内存中的垃圾对象?
102浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙应用中如何使用JSVM-API进行内存管理
73浏览 • 1回复 待解决
关于《华为帐号登录管理细则》的一些疑问
1742浏览 • 1回复 待解决
在开发鸿蒙应用时,开发者如何利用Purgeable Memory内存管理机制?
156浏览 • 0回复 待解决
如何避免因生命周期管理不当而导致的内存泄漏和应用崩溃?
471浏览 • 0回复 待解决
#鸿蒙通关秘籍#AbilityStage的onMemoryLevel事件回调在内存管理中起什么作用?
166浏览 • 1回复 待解决
#鸿蒙通关秘籍#在鸿蒙应用中如何处理用户首选项的内存管理?
184浏览 • 1回复 待解决
#鸿蒙通关秘籍#关于HarmonyOS中如何管理页面和组件的生命周期?
153浏览 • 1回复 待解决
HarmonyOS关于JSVM中JSVM_Value对象生命周期管理的问题
354浏览 • 1回复 待解决
ArkTS的对象数据与Native的对象数据如何绑定,相互持有对象数据时内存如何管理
1980浏览 • 1回复 待解决
HarmonyOS 内存泄漏检测
25浏览 • 1回复 待解决
HarmonyOS napi共享内存指导
8浏览 • 1回复 待解决
HarmonyOS 怎么检查内存泄漏
558浏览 • 1回复 待解决
HarmonyOS webview内存占用问题
8浏览 • 1回复 待解决
HarmonyOS 应用内存资源占用过大时,系统是否会自动释放内存?
469浏览 • 1回复 待解决
HarmonyOS dump本地内存的api
13浏览 • 1回复 待解决
HarmonyOS 运行报错,内存不足
609浏览 • 1回复 待解决
HarmonyOS有自己的GC机制会自动处理,变量在内存中不使用后,一般不会立即释放,请参考如下对GC的介绍:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/gc-introduction-V5
https://blog.csdn.net/HarmonyOSDev/article/details/125886382