如题,本文主要记录微信使用webgl内存泄露的原因。
该内存泄漏场景如下
微信x5内核浏览器
使用threejs
使用WebGLRenderTarget
导致内存泄漏的主要因素是多次声明出WebGLRenderTarget对象,在该对象上进行三维图形绘制(仅声明对象内存占用不明显,也未做极限测试)。该对象的内存占用不仅是一张图片的大小,其中保存了深度信息等。
在常见的手机浏览器如火狐,谷歌,自带浏览器等都不存在,或不明显(有内存释放的过程)的内存泄漏情况。暂时只发现该情况存在于微信浏览器上。
可使用复用一个WebGLRenderTarget解决该问题,必要时可以清除WebGLRenderTarget对象下的缓存数据。
在不同的语言和平台上都找到了关于rendertartget内存泄漏相关的问题,但相似不相同,故做此记录。
https://bbs.egret.com/thread-50136-1-2.html
https://social.technet.microsoft.com/Forums/en-US/0cd41544-886d-40b0-b988-a7dd9377d161/rendertargetbitmaprender?forum=projectprofessional2010general
https://stackoverflow.com/questions/6713868/rendertargetbitmap-memory-leak