我是在iphone7 13.6 上的wkwebview 还有 手机自带浏览器 safari,还有macOS BigSur 版本11.6自带的 safari ,iphoneX ios 15.1 找了4个地方测试的表现都是一样的,内存只释放部分 ,无法完全释放,这4个地方表现的结果都是一样的
我的这个Demo 我是直接在macOS BigSur 版本11.6自带的 safari测试过的 刚进界面 1个场景+1个背景图+3个按钮内存已经达到110M ,3个界面打开关闭 打开关闭 来回切换 后,内存大概会保持 在160m -180m 无法释放到110M,但cc.assetmanager.assets的数量是恢复了
希望大佬继续跟进一下
有在查,之前以为是指内存会不停上涨,理解错了
感谢大佬 
大佬,目前是什么情况,是否有找到问题所在,因为这个问题比较严重,影响游戏上线。。 
目前排查的情况内存占用:
- v8 对 js 代码优化后所占用的固有内存;
- 引擎一些对象池的缓存数据;
从这个 demo 看,目前没有发现内存一直上涨的情况。
因为如果是这种节奏如果是界面打开多的情况下,每个界面都残留一些内存的话,机子的内存撑不住,这个只是demo,正式的界面 使用的资源更多。
那意思是可以恢复到打开界面之前的内存吗
那部分内存是一般是不会去释放的,正常不会一直有残留,对象池内会回收多余的数据,可能和你们项目遇见的问题不一样。
10多分钟也释放不掉,内存会一直在,demo项目中 内存也是10分钟了 内存一直保持在160-180,无法回到110M,我们的项目中就是打开界面 较多,内存每个界面 泄露一点,一直无法释放。。内存最后就超标了
那就是我的demo中所展示的 110M内存-180M内存 ,其中70M内存是合理需要才遗留下来的
这个内存问题是否是ios自身机制问题,如果确实如此只能放弃web端,改为原生,我也只想得到一个引擎组的官方回复
你们这个问题有解决吗
demo中的内存泄露70M如果不是引擎的问题,是IOS的缓存机制,并且无法修改,我就直接出原生了
你好,请问有办法解决吗?我的项目资源很大,在wkwebview跑几分钟就会黑屏,应该是和你一样的问题。
若断定 demo中 的遗留的70m内存属于 * v8 对 js 代码优化后所占用的固有内存; * 引擎一些对象池的缓存数据;那无法修改的话,麻烦回复一下,这里好确定方向
方便用 3.5.2 测试下?3.5 有修过有关内存的,比如3d 粒子;
对象池里的数据要看是正常的,还是不正常的,如果对象池里数据不稳定,一直在增加,那就是有问题。
你可以看下 ContainerManager.ts 下里面的 pool 下的数据的变化情况。
好的,我试试
无任何效果,而且还发现一个在safari浏览器下 GFX Buffer Men(M)GFX 缓存 也不会释放 应该和spine有关
同上,降低引擎固有内存的方法。
其中 CanvasPool 的数量可以通过项目设置中的 Macro Comfigurations 设置 MAX_LABEL_CANVAS_POOL_SIZE
另外修改 container-manager.ts 中的代码为如下,可以减少一部分 JS 内存:
同样的,修改 recycle-pool.ts 中的代码为如下,也可以减少一部分 JS 内存(此处的长度设置为 4 ,仅测试过本帖提供的 demo 、引擎自带的快上车 3D 案例和 Spine 测试例中测试通过。如果遇到复杂场景,可能需要增大此数值。不可低于 4 ):
在 Object.ts 中,添加 number 和 boolean 类型置空。
开启 CleanupImageCache 的,避免缓存纹理内存。(注意会导致自动合图失效)
剔除非必要的引擎模块,也能大幅降低游戏 JS 内存。
其余部分的内存占用暂时没有优化方案。





