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

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

for(const name of nameArr){ 
  await function(name) 
} 
async function(name: string){ 
  // 耗时操作,或者其他async函数 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
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 线程通信 事件循环问题
778浏览 • 1回复 待解决
TaskPool和Worker中任务调度机制
2883浏览 • 1回复 待解决
关于HarmonyOS Promise机制
1346浏览 • 1回复 待解决
HarmonyOS Promise,await/async 的线程模型
681浏览 • 1回复 待解决
PromiseAsync/Await 的比较
1039浏览 • 1回复 待解决
HarmonyOS 无限循环banner效果
660浏览 • 1回复 待解决
HarmonyOS forEach return退出循环
840浏览 • 1回复 待解决
HarmonyOS Swiper循环问题
1013浏览 • 1回复 待解决
HarmonyOS IDE构建经常暴内存溢出
879浏览 • 1回复 待解决
list 支持循环滚动吗?
2850浏览 • 1回复 待解决
JS中如何使用Promiseasync await
1614浏览 • 1回复 待解决
HarmonyOS 循环水平滚动
441浏览 • 1回复 待解决