[LayaAir3]VideoTexture,VideoNode视频和Image图片内存释放问题

我在做场景切换的时候出现的视频内存释放问题

video1.png

如图,VIdeoTexture和VideoNode都是依赖原生的video标签,而原生的video标签一旦创建了,如果不将src设置为null,会一直占用内存,据我看源码并没有这一步操作,所以视频占用的内存完全无法释放
 
Image的内存问题出现在我重复对一个Image组件更换skin,由于我不可能每次都去调用dispose方法,不然我还得重新创建Image,做各种定位什么的。
image1.png

image2.png

如上图,skin这个属性会将内容写入资源库,可以在Laya.Loader.loadedMap中找到,如果我重复写这个skin,那么就会在loadedMap中写入很多,但是我切换场景的时候,哪怕我去销毁这个Image,也就是dispose,但是只能销毁当前的skin,而之前所有的skin都会在loadedMap中占用空间
已邀请:

Laya_XS

赞同来自:

1、关于videoTexture销毁释放内存泄漏的问题,这个我们处理下,开发者可以临时改下引擎临时处理下,增加一个消耗video节点的方法:
destroyVideoElement() {
if (this.element) {
this.element.pause();
this.element.src = "";
while (this.element.childElementCount)
this.element.firstChild.remove();
}
ILaya.timer.clear(this, this.render);
}
2、关于Image所说的内存泄漏的问题,你们上面的描述更多的可以认为这个属于项目本身的处理问题。针对一个Image实例对象,频繁的切换skin,看更换当前的图片显示内容。这个最好的实现方式就是在切换前用一个数组存下当前的Image实例的skin地址,在完全不用了,遍历全部销毁释放下就行了。这个如果放到引擎里处理,并不是一个好的建议。

要回复问题请先

商务合作
商务合作