HarmonyOS关于async或者promise,基于事件循环调度机制,会存在比如for循环多次导致事件栈溢出、内存过大

代码示例:比如有一个用户名字符串数组nameArr。

for(const name of nameArr){ 
  await function(name) 
} 
async function(name: string){ 
  // 耗时操作,或者其他async函数 
}
HarmonyOS
2024-09-18 11:54:57
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

HarmonyOS的栈大小当前是8M,栈的处理主要是对变量的压栈、出栈等,不同于堆,堆是对内存的申请与释放(如malloc、new分配内存),字符串数组应该是通过new操作从堆中分配的for循环多次,不会导致栈溢出,但对于堆来说,如果存在new操作,就会存在多次分配内存,使内存增加,但是HarmonyOS有自己的GC机制(请参见https://blog.csdn.net/HarmonyOSDev/article/details/125886382),会自动管理内存的申请与释放,用户不用关心。

HarmonyOS内存的分析说明文档,可参考:

1)基础内存分析:Allocation分析:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-insight-session-allocations-0000001481625938-V5

2)内存泄露分析:Snapshot分析:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-insight-session-snapshot-0000001532065793-V5

分享
微博
QQ
微信
回复
2024-09-18 17:22:45
相关问题
HarmonyOS 线程通信 事件循环问题
414浏览 • 1回复 待解决
TaskPool和Worker中任务调度机制
2238浏览 • 1回复 待解决
关于HarmonyOS Promise机制
790浏览 • 1回复 待解决
PromiseAsync/Await 的比较
605浏览 • 1回复 待解决
HarmonyOS Promise,await/async 的线程模型
178浏览 • 1回复 待解决
JS中如何使用Promiseasync await
1052浏览 • 1回复 待解决
HarmonyOS forEach return退出循环
167浏览 • 1回复 待解决
HarmonyOS 无限循环banner效果
193浏览 • 1回复 待解决
HarmonyOS Swiper循环问题
559浏览 • 1回复 待解决
HarmonyOS IDE构建经常暴内存溢出
348浏览 • 1回复 待解决