[]如何完全删除精灵 并回收内存

用IDE新建一个项目
var WebGL = laya.webgl.WebGL;
Laya.init(600, 400, WebGL);

1532713307752.jpg

此时用chrome工具看到 占用内存6.4mb
var WebGL = laya.webgl.WebGL;
Laya.init(600, 400, WebGL);
let container = new Laya.Box()
for(let i =0;i<1000;i++){
let t = new Laya.Text()
t.text = 'test'
t.color = '#ffffff'
container.addChild(t)
}
Laya.stage.addChild(container)
新建一个精灵 向其中插入1000个文字

1532713525989.jpg

内存快照变为10.5
var WebGL = laya.webgl.WebGL;
Laya.init(600, 400, WebGL);
let container = new Laya.Box()
for(let i =0;i<1000;i++){
let t = new Laya.Text()
t.text = 'test'
t.color = '#ffffff'
container.addChild(t)
}
Laya.stage.addChild(container)
container.destroy()
container = null
使用destroy清除container后 内存变为7.6
1532713690252.jpg
var WebGL = laya.webgl.WebGL;
Laya.init(600, 400, WebGL);
let container = new Laya.Box()
for (let i = 0; i < 10; i++) {
for (let i = 0; i < 1000; i++) {
let t = new Laya.Text()
t.text = 'test'
t.color = '#ffffff'
container.addChild(t)
}
Laya.stage.addChild(container)
container.destroy()
}
重复以上添加删除过程,内存变为8.9 而且没有被回收

1532713837629.jpg

 
这是否代表destroy后,内存也没有被回收,应该如何完全删除精灵并回收占用的内存??
已邀请:

智力猫

赞同来自:

经过观察..内存上升到100mb左右开始上升的很慢,有时会减少
文档中也说到destroy可以让精灵等待gc,gc运行的时机是内存足够低的时候
在微信小游戏下,等不到gc游戏就闪退了
 
最后使用pool,这样可以使内存不持续增长
var WebGL = laya.webgl.WebGL;
Laya.init(600, 400, WebGL);
setInterval(() => {
var container = null
for (let i = 0; i < 10; i++) {
container = (i == 0) ? new Laya.Box() : laya.utils.Pool.getItem('Container')
for (let i = 0; i < 1000; i++) {
let t = null
if (i == 0) {
t = new Laya.Text()
t.text = 'test'
t.color = '#ffffff'
} else {
t = laya.utils.Pool.getItem('Text')
}
container.addChild(t)
laya.utils.Pool.recover('Text', t)
}
laya.utils.Pool.recover('Container', container)
Laya.stage.addChild(container)
container.removeSelf()
}
laya.utils.Pool.clearBySign('Text')
laya.utils.Pool.clearBySign('Container')
container = null
}, 100)
可以结贴了

Aar0n

赞同来自:

destroy(true)

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作