V2.3.0内存不会下降的Bug

升级到这个版本后,发现内存一直在涨,不会下降,于是自己写了个很简单的demo测试了一下,发现js不会自动回收内存,下面是我的全部代码:


首先,我进入游戏先手动调用cc.sys.garbageCollect()清理了一下内存,下面是初始占用的内存:

然后我点击按钮1,加载了一个精灵帧资源,占用内存如下:

然后我点击按钮2,卸载了刚才加载的资源,占用内存如下:

然后我等了10分钟,占用内存如下:

最后我点击按钮3,手动gc,内存占用如下:

最后总结一下,我不手动gc,js并不会自动回收内存,而且就算我手动gc了,内存和初始内存对比,也增长了7m,不知道哪里涨的,这个现象,导致我的游戏内存一直在涨不会降低,到了一定程度,内存不足就会闪退,麻烦引擎组的大佬看看这个问题啊,下面是我的demo:
MemoryBug.zip (455.9 KB)

求各方大佬帮忙看看找找原因

如果没什么办法,需要我定时去手动gc话,那每次gc都会卡一会,这样体验很不好啊

自顶自顶自顶

2.3.1 已经修复了喔,麻烦试一下 rc.5

好的,多谢大佬

请问2.3.1在哪里下载?

找到了

大佬,我用2.3.1版本测试了我的demo,还是一样的,内存不会降:joy:

抱歉我之前没注意看。这个问题很可能是正常的,取决于 V8 的内存使用策略,事实上也没必要完全归还给操作系统。主要关注的应该是重复执行上述过程,内存是否会无限增长下去。

我测试了,只要不手动gc,一直重复加载资源然后卸载资源,内存会一直涨,不会降下来

如果有手动 GC 的话,也会无限涨吗?

手动gc能降下来

那也是正常的。GC 时机是虚拟机自行根据内存用量决定的,频繁 GC 没意义。
只有虚拟机没有 GC 导致最终应用崩溃退出,或者每次手动 GC 之后内存用量都仍在持续上涨,才是内存泄露。