cocos2dx-js rc1 版本 内存问题

请教大神一下,在这个版本的 jsb 运行时,如何释放 spidermonkey 创建的对象?
理论上spidermonkey有一套自己的内存管理机制,实际上的表现让我有些疑惑

代码如下

HelloWorldScene 下定义一个计时器,做如下操作

update:function(dt){
for(var i=0;i<100;i++){
var test = new Object();
test = null;
}
}

这段代码在手机(iphone4s) 上运行的结果是在 1 分钟内,内存从刚开始的 23 M左右涨到 60M,此后不再增长。切换场景后内存依然保持在这样的一个水平,请问如何将内存使用维持在一个比较低的水平。

谢谢。

我有类似的问题!!

游戏项目战斗模型中所有的数据模型类都是继承自cc.class.extend!

储存着一些数据信息,如人物角色信息,技能信息等等。。

创建之后并没有做什么特殊的清理, 手机里跑内存就都一直在增加!

本以为这个会进入js自己的gc!但是内存没有降下!!!

紧急啊!!!

求解答~~~~感谢:6:

如果不是显示对象,我的做法是,把里面所有对象都=null(前提是所有对象里的每个对象里面也得把它自已的所有对象=null,依次类推),然后在这个对象上级对象(是指创建它的对象)里也要把这个对象=null,也就是说所有的对象都=null一遍,代码如下:

this._对象1=new 对象1();

this._对象1.dispose();

对象1=cc.Class.extend({
_obj1:null,
_obj2:null,
ctor:function()
{
this._obj1=new 对象2();
this._obj2=new 对象2();
},

dispose:function()
{
    if(this._obj1)
    {
        this._obj1.dispose();
        this._obj1=null;
    }
    if(this._obj2)
    {
        this._obj2.dispose();
        this._obj2=null;
    }
}

})

对象2=cc.Class.extend({
_objx1:null,
_objx2:null,
ctor:function()
{
this._objx1=new 对象x();
this._objx2=new 对象x();
},

dispose:function()
{
    if(this._obj1)
    {
        this._objx1.dispose();
        this._objx1=null;
    }
    if(this._obj2)
    {
        this._objx2.dispose();
        this._objx2=null;
    }
}

})

不费吧。。。。。。。

真的假的。。。。

你试过这样有用吗?内存降下来了?

这样做非常麻烦啊。。。。 :10:

SpiderMonkey的垃圾回收机制也是常见的mark & sweep方式,但是gc何时触发是不确定的。
不太清楚楼主你是什么应用场景下需要写类似这样的代码。手动强制gc倒是可以解决,我在pc上试了内存会稳定在31m左右。不过最好还是避免写出这样的代码,gc发生时可能会造成卡顿。楼主可以试下下面的代码

update:function(dt){
for(var i=0;i<100;i++){
var test = {};
test = null;
}
cc.sys.garbageCollect();
}

在做页游时,这样做是有用的(当然,一些显示对象以及事件也要是清理的),以下是手游我在真机调试的结果,前面是内存大小,后面是当前在处于什么阶段,至于有没有用,我不太肯定,你可以理解成我的个人习惯,但是下面的数据,还是多多少少可以说明一些东西,当然,这不能说就是我的这个用法起到的作用,但至少所有的js对象都处于自已的控制当中

70M(进游戏,启动第一个对话引导)
114M(进战斗后,战斗阶段1)
117M(进战斗后,战斗阶段2,战场中有新加入敌方以及我方人员)
74M(战斗结束,启动对话引导)
73M(对话引导,结束,进入功能1引导前)
98M(功能1中及引导中)
72M(退出功能1及对应的引导,继续起动下一个对话引导)
75M(功能2以及对话引导中)
69M退出功能2引导,回到主界面,这里没有对话引导

谢谢楼上各位。手动回收内存确实有效。

lishujun 提供的模式,虽然会增加一点代码量,但确实是一个很好的习惯,值得学习,谢谢。

如果 像 各种教程所说 是不用就删除 那重新加载资源 这样是不是造成了 很大的 流量消耗 :11:

从json文件中读取的ui控件也能使用dispose()函数?