每个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)];
}
}
谢谢你看一下
答案 0 :(得分:0)
请确保任何全局引用都没有保留上一个屏幕实例。此外,我们可以通过在新屏幕转换后立即将null设置为引用来引用它们。它会带来更好的结果。