原生平台IOS,简单加载释放图片存在严重的内存泄漏问题!!!

TestMemoryLeak.zip (3.3 MB)
机型:iphone 12pro
测试一:
我在demo 不断加载和释放一张2048 * 2048的图片,代码很简单
resources.load(2/test111/spriteFrame, SpriteFrame, (err, sf) => {
this.assets.push(sf);
sf.addRef();

        for (let i = 0; i < 5; ++i) {
            let node = new Node();
            let sprite = node.addComponent(Sprite);
            sprite.spriteFrame = sf;
            this.container.addChild(node);
        }
    });

释放时候:
this.container.destroyAllChildren();
this.assets?.forEach((asset, index, arr) => {
asset.decRef();
});
this.assets = [];
每隔1s 来回加载渲染,并释放,4分多钟,用真机测,内存占用从260m增加到了350多M

测试二:
不断加载渲染 释放 两张2048 * 2048 的图片,
用真机测,结果,这是一分钟内存增长的情况:


2分钟不到内存狂飙到了1G多

如果只加载资源不渲染,就release,内存不存在严重的泄漏。
应该在渲染上存在很严重的泄漏。。。猜测可能跟自动和批有关(但我已通过代码把自动和批关闭)。
最后附上demo

希望官方能集中精力解决下这些内存泄漏问题,3.0某些功能缺失,或者一些简单bug,我们开发者都能接受,不会太影响项目上线。但老是爆出这类严重内存泄漏问题,会严重打击开发者信心的。即使能给个简单的临时解决方案也行。

asset.decRef();
//加一行试试看
asset = null

没有用。已经整个assets设为空了。而且这个不是网页。

GC问题吧,而且原则上频繁使用的资源不应该释放的

跟GC没关系。原生资源管理基本不通过GC。而且再怎么GC,显存都不应该涨。是明显的泄漏

3.3.0 版本已修复,刚刚用 3.3.0 内测版本测试没有出现泄漏问题。
这是修复 pr:
https://github.com/cocos-creator/engine-native/pull/3686

还有这个修复 fix texture memory leak on Metal renderer. by xianyinchen · Pull Request #3623 · cocos-creator/engine-native ·

还有这个:https://github.com/cocos-creator/engine-native/pull/3752

终于找到了解决方案