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 线程通信 事件循环问题
225浏览 • 1回复 待解决
TaskPool和Worker中任务调度机制
1862浏览 • 1回复 待解决
关于HarmonyOS Promise机制
208浏览 • 1回复 待解决
PromiseAsync/Await 的比较
344浏览 • 1回复 待解决
HarmonyOS Swiper循环问题
281浏览 • 1回复 待解决
list 支持循环滚动吗?
2126浏览 • 1回复 待解决
如何排查循环引用的问题
357浏览 • 1回复 待解决
是否允许HAR的循环依赖
1892浏览 • 1回复 待解决
JS中如何使用Promiseasync await
541浏览 • 1回复 待解决
是否有一对多事件传递机制
1912浏览 • 1回复 待解决
napi_queue_async_work 处理机制
910浏览 • 1回复 待解决