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
}))
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
自测发现某些场景下即使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
})
}
}
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
页面结构从父到子:根页面 -> SearchResultContent -> SearchResultSubContent。
现象:根页面中通过if已经释放掉了SearchResultContent,但是下次再创建SearchResultContent时,在SearchResultSubContent的callback内打印了上一次的对象地址。
HarmonyOS
赞
收藏 0
回答 1
相关问题
HarmonyOS 介绍内存管理的文档
943浏览 • 1回复 待解决
ArkTS语言内存管理,会自己管理吗
3135浏览 • 1回复 待解决
HarmonyOS 关于状态管理
1049浏览 • 1回复 待解决
如何利用HarmonyOS NEXT的内存管理机制来减少内存泄漏和提高内存使用效率?
1429浏览 • 0回复 待解决
如何在HarmonyOS中实现高效的内存管理?
988浏览 • 0回复 待解决
在开发HarmonyOS NEXT应用时,如何使用内存管理工具诊断和优化内存泄漏问题?
444浏览 • 2回复 待解决
HarmonyOS 关于calendarManager(日程管理能力的咨询)
863浏览 • 1回复 待解决
ArkTS和HarmonyOS Next的内存管理和垃圾收集是怎样的?
309浏览 • 0回复 待解决
HarmonyOS 关于hmosworld Navigation一些管理问题的疑问
853浏览 • 1回复 待解决
HarmonyOS 有没有关于C++层的内存分析检测工具
934浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS NEXT项目中进行UI集成和内存管理?
932浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在ArkTS中有效管理内存中的垃圾对象?
967浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙应用中如何使用JSVM-API进行内存管理
932浏览 • 1回复 待解决
谁可以提供一些关于鸿蒙app内存回收机制资料
297浏览 • 0回复 待解决
关于《华为帐号登录管理细则》的一些疑问
2717浏览 • 1回复 待解决
在开发鸿蒙应用时,开发者如何利用Purgeable Memory内存管理机制?
883浏览 • 0回复 待解决
如何避免因生命周期管理不当而导致的内存泄漏和应用崩溃?
1169浏览 • 0回复 待解决
#鸿蒙通关秘籍#AbilityStage的onMemoryLevel事件回调在内存管理中起什么作用?
1145浏览 • 1回复 待解决
HarmonyOS 如何获取内存快照,分析内存泄漏问题?
1029浏览 • 1回复 待解决
#鸿蒙通关秘籍#在鸿蒙应用中如何处理用户首选项的内存管理?
1038浏览 • 1回复 待解决
HarmonyOS关于JSVM中JSVM_Value对象生命周期管理的问题
951浏览 • 1回复 待解决
#鸿蒙通关秘籍#关于HarmonyOS中如何管理页面和组件的生命周期?
1225浏览 • 1回复 待解决
HarmonyOS Native内存暴涨
945浏览 • 1回复 待解决
HarmonyOS 模拟器里“文件管理”- 内存存储里的download对应hdc shell ls -l /里哪个路径
926浏览 • 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