antvis/G2

[v5] 多次运行动画存在内存泄漏情况 #4843

xiaoiver posted onGitHub

类似问题:https://github.com/antvis/G2/issues/4796

复现方法:timingKeyframe 容器设置 iterationCount: Infinity 即可

截图展示了运行一段时间后的三次内存信息,可以看出一直在增长:

<img width="1101" alt="截屏2023-03-28 下午5 17 42" src="https://user-images.githubusercontent.com/3608471/228189933-ac45a74d-ace1-4a9f-ac6f-d2a016e553f8.png">

原因是存在大量未被销毁的 Path 对象。应该是形变动画结束后,没有调用 path.destroy() 销毁。


这里组件会有相同的问题吗?比如组件的文本。

posted by pearmini about 2 years ago

该问题 @antv/g@5.16.13 已修复,G2 不需要做任何修改。目前只需要将图形从画布中移除就可以得到及时回收:

shape.remove();

下图为一个无限执行的动画效果验证,相邻两个 memory snapshots 间隔 30s。可以看出内存已经能够及时得到回收:

<img width="791" alt="截屏2023-04-03 下午1 21 54" src="https://user-images.githubusercontent.com/3608471/229418442-d9c23469-406c-414c-81ab-37a55f759855.png">

posted by xiaoiver about 2 years ago

这个内存泄漏的原因是什么?

posted by hustcc about 2 years ago

这个内存泄漏的原因是什么?

shape 从场景树移除但是没有调用 shape.destroy 的时候没有销毁。

posted by pearmini about 2 years ago

Fund this Issue

$0.00
Funded

Pull requests