3.3.2,模型内存泄漏

  • Creator 版本:3.3.2

  • 目标平台: ios

  • 重现方式:必现

  • 编辑器操作系统: mac

  • 重现概率:100%

加载模型后destroy(),无法解除内存占用,删除时模型已无任何引用,见测试项目;
去掉材质后依然如此;
测试sprite预制体正常;

测试项目
NewProject.zip (218.2 KB)

补充,反复进行以上操作,几十次后,内存仍然还是会持续轻微上涨

没看懂。。。是存在内存泄漏吗?还是不存在?非嘲讽,真诚问!

和你讲ios 任何的东西 你创建删除都会这样 一直涨 特别是场景 大的layer 然后降不来 然后发过很多贴 没有得到解决方法

所以这是ios的锅吗?

大哥,请相信我们的专业性。不是没有解决,是论坛帖子太多了问题确实容易跟丢……
如果有比较明确的现象、Demo,我们这边重现完很快就会解决。

我试了下安卓也是一样。

我们测试了多个平台,发现了一些细节上的问题和3.3.2内存上的不可控性.

  1. 在原生平台上可以使用triggerGC的方法来强制执行垃圾处理,这可以使得没有被清理的垃圾内存回归。
//example
if(JSB){
    jsb.garbageCollect();
}

2.通过每帧调用强制垃圾回收,在ios/mac平台运行内存的曲线图是这样的。可以保持平稳。但是每6到7次仍有1mb的增幅。故此我们针对这1mb进行了分析


(这里的跳跃性是不小心加载了两次100个模型导致内存池扩张。)
3.把加载模型后释放到稳定状态的几个运行内存通过footprint打印出来后可以发现 MALLOC_相关的vm分配的内存都有增长 ,目前暂时不可控。增长的频率大概是6-7次加载100个模型后会增长1mb。(甚至空场景也会出现vm的增长)。后期有余力时会聚焦到vm的内存分配上。




4. 模型的aabb内存分配在原生端存在没有退回内存池的情况,导致每次加载模型内存池都会重新alloc。开发者可以拉取下方PR应用更改。

目前引擎组挺忙,所以问题回复可能不及时 :rofl: