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
待解决
相关问题
HarmonyOS 介绍内存管理的文档
1133浏览 • 1回复 待解决
ArkTS语言内存管理,会自己管理吗
3339浏览 • 1回复 待解决
HarmonyOS 关于状态管理
1280浏览 • 1回复 待解决
HarmonyOS 有具体的内存管理的文档吗,介绍HarmonyOS 对class和component的内存管理,如何使用避免内存泄漏
1119浏览 • 1回复 待解决
如何利用HarmonyOS NEXT的内存管理机制来减少内存泄漏和提高内存使用效率?
1653浏览 • 0回复 待解决
如何在HarmonyOS中实现高效的内存管理?
1157浏览 • 0回复 待解决
在开发HarmonyOS NEXT应用时,如何使用内存管理工具诊断和优化内存泄漏问题?
761浏览 • 2回复 待解决
ArkTS和HarmonyOS Next的内存管理和垃圾收集是怎样的?
485浏览 • 0回复 待解决
HarmonyOS 关于calendarManager(日程管理能力的咨询)
1024浏览 • 1回复 待解决
HarmonyOS 关于hmosworld Navigation一些管理问题的疑问
1042浏览 • 1回复 待解决
HarmonyOS 有没有关于C++层的内存分析检测工具
1107浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT项目中进行UI集成和内存管理?
1131浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在ArkTS中有效管理内存中的垃圾对象?
1154浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙应用中如何使用JSVM-API进行内存管理
1154浏览 • 1回复 待解决
关于《华为帐号登录管理细则》的一些疑问
2898浏览 • 1回复 待解决
谁可以提供一些关于鸿蒙app内存回收机制资料
465浏览 • 0回复 待解决
在开发鸿蒙应用时,开发者如何利用Purgeable Memory内存管理机制?
1173浏览 • 0回复 待解决
#鸿蒙通关秘籍#AbilityStage的onMemoryLevel事件回调在内存管理中起什么作用?
1334浏览 • 1回复 待解决
如何避免因生命周期管理不当而导致的内存泄漏和应用崩溃?
1366浏览 • 0回复 待解决
HarmonyOS 如何获取内存快照,分析内存泄漏问题?
1308浏览 • 1回复 待解决
#鸿蒙通关秘籍#在鸿蒙应用中如何处理用户首选项的内存管理?
1218浏览 • 1回复 待解决
HarmonyOS 模拟器里“文件管理”- 内存存储里的download对应hdc shell ls -l /里哪个路径
1084浏览 • 1回复 待解决
#鸿蒙通关秘籍#关于HarmonyOS中如何管理页面和组件的生命周期?
1501浏览 • 1回复 待解决
HarmonyOS关于JSVM中JSVM_Value对象生命周期管理的问题
1119浏览 • 1回复 待解决
HarmonyOS Native内存暴涨
1165浏览 • 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