在cocos2d-x中的HelloLua工程中的hello.lua文件替换为以下代码进行测试:
function updateTime()
–隔一段时间后,确保COCOS2D对象都释放了,再次GC,再次打印LUA内存占用
collectgarbage(“collect”)
print(“memory3:”, collectgarbage(“count”))
end
updateFunc_ = CCDirector:sharedDirector():getScheduler():scheduleScriptFunc(updateTime, 60, false)
–首先GC清理干扰,并打印首次LUA占用内存
collectgarbage(“collect”)
print(“memory1:”, collectgarbage(“count”))
–以下对象没有被引用,会被自动释放
for i=1,100000 do
CCAnimation:create()
CCMenu:create()
CCLabelTTF:create()
CCScene:create()
CCLayer:create()
CCNode:create()
CCSprite:create()
end
–多次调用GC并打印LUA内存占用
collectgarbage(“collect”)
collectgarbage(“collect”)
collectgarbage(“collect”)
collectgarbage(“collect”)
print(“memory2:”, collectgarbage(“count”))
运行一段时间之后打印如下结果
memory1: 776.4794921875
memory2: 23305.096679688
memory3: 23304.478515625
按道理上面创建的大量对象会自动释放,内存应该会降下来,但是LUA占用的内存一直升高,导致程序最后被杀死,请问如何处理,谢谢大家