每次调用director.replaceScene()时,cocos2d-js ios内存使用量都会不断增加

时间:2015-09-10 01:58:17

标签: cocos2d-js

每个cc.log在驻留内存大小上显示大约1 Kb

是正常还是我做错了什么?

这是我的Scene2代码,除了调用Scene2

外,Scene3完全相同

var Scene2Layer = cc.Layer.extend({ fcount2: 0, ctor:function() { this._super(); this.fcount2 = 0; cc.log( new Date().toLocaleString() + " : Scene 2 : " + jsb.reflection.callStaticMethod("NativeOcClass","callNativeWithReturnString") ); this.scheduleUpdate(); return true; }, update:function(dt){ // fps is set to 30 so we run a new scene every .1 second if( ++this.fcount2 == 3 ) cc.director.replaceScene(new Scene3()); } }); var Scene2 = cc.Scene.extend({ onEnter:function() { this._super(); var layer = new Scene2Layer(); this.addChild(layer); } });

我正在使用cocos2d-x 3.7 获取常驻内存大小的代码如下:

    +(NSString *)callNativeWithReturnString{
    struct mach_task_basic_info info;
    mach_msg_type_number_t size = MACH_TASK_BASIC_INFO_COUNT;
    kern_return_t kerr = task_info(mach_task_self(),
                                   MACH_TASK_BASIC_INFO,
                                   (task_info_t)&info,
                                   &size);
    if( kerr == KERN_SUCCESS ) {
        return [NSString stringWithFormat:@"Memory used: %u K-bytes", info.resident_size / 1000];
    } else {
        return [NSString stringWithFormat:@"Err task_info(): %s", mach_error_string(kerr)];
    }
}

谢谢你看一下

1 个答案:

答案 0 :(得分:0)

请确保任何全局引用都没有保留上一个屏幕实例。此外,我们可以通过在新屏幕转换后立即将null设置为引用来引用它们。它会带来更好的结果。