使用Web Worker后主线程仍卡顿,求技术排查方案
ThreeJS OffscreenCanvas迁移后主线程卡顿问题排查
问题现状
- 已完成复杂3D场景向
OffscreenCanvas的迁移,GLB文件、纹理贴图加载逻辑移至Web Worker,场景渲染效果与传统Canvas完全一致 - 页面加载spinner在资源加载完成、场景开始渲染后出现卡顿;尝试先隐藏所有3D对象,在渲染循环中逐个显示时,带反射的玻璃对象渲染阶段卡顿尤为明显,该表现与传统Canvas模式下一致,推测是渲染器负载过高,但不解为何主线程会出现卡顿
- 无法解读Chrome Memory面板内容,且因项目商业机密无法提供Demo
补充说明
Web Worker负责的GLB和图片加载速度更快,且完全不影响主线程,并非无用设计
已实施的优化措施
- 缩小纹理尺寸
- 替换为ThreeJS最简材质
- 优化动画关键帧
- 采用逐个显示3D对象的加载策略
- 场景包含带骨骼动画、面部变形的复杂3D角色及办公环境,上述优化后卡顿问题仍无改善
待解疑问
- 如何通过Chrome开发者工具查看独立内存线程的状态?
- 是否存在Web Worker线程数量达上限的情况?
- 卡顿是否由显卡负载过高导致?
- 目前是否无法利用GPU独立内存线程?
相关截图
- Chrome Performance面板截图:

about:gpu页面截图:
- 补充场景相关截图:

内容的提问来源于stack exchange,提问作者GeorgePorge
相关产品推荐
相关产品推荐

