-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(OOM): clear interaction and cancel animation when rerendering #4899
Conversation
之前怀疑是 animation 对象调用 cancel 后没销毁,但我写了一个例子,每隔 1 秒销毁之前的动画并创建 1000 个新动画对象 Animation,观察内存是否呈线性增长趋势,以及 Animation 数量是否会一直增加(类似 G2 的截图): 但观察下来 Animation 对象始终维持在 1000 个,并不会无限增长: 所以我猜测还是在使用时没调用全部 animation 对象的 |
那内存泄漏就不是 animation 带来的,继续排查下,这个案例,现在增长是变慢了,但是我 setInterval 改成 100 的时候,依然很快就爆炸了。 |
setInterval 为 100 的可能是新的问题:上一次渲染还没有完成(动画 300ms)就开始了下一次。 |
那也是需要清除之前的动画。 |
内存泄漏
解决 #4896 提到的问题的 95% 。
出现原因
修复办法
效果
可以发现内存增长的很慢了,这个部分需要 @xiaoiver 进一步在 g 里面看看:调用 animation.cancel 时候完全清除了动画。