JSB的新内存模型
使用新的内存模型后,开发者不需要关心对象的声明周期。这就意味着不需要在JS代码里手动调用retain/release函数。
不过该内存模型默认是关闭的。虽然我们已经做了很多的测试,目前没有发现任何问题,但是保险起见,你需要手动开启该功能,开启的方法是在base/ccConfig.h里把CC_ENABLE_GC_FOR_NATIVE的值改为1:
这种内存模式 是什么模式的?
没有retain 那我怎么知道让他暂时不释放的?
JSB的新内存模型
使用新的内存模型后,开发者不需要关心对象的声明周期。这就意味着不需要在JS代码里手动调用retain/release函数。
不过该内存模型默认是关闭的。虽然我们已经做了很多的测试,目前没有发现任何问题,但是保险起见,你需要手动开启该功能,开启的方法是在base/ccConfig.h里把CC_ENABLE_GC_FOR_NATIVE的值改为1:
这种内存模式 是什么模式的?
没有retain 那我怎么知道让他暂时不释放的?
模式跟现在的是反的 通过计算js这边的对象的引用不为0的话 就不会被释放(按照我的理解)
不过还没有用过,开启后以前的代码崩溃,降级到3.10 安全了。。。
新的内存模型由js这边管理C++里的对象内存释放,释放时机取决于js的虚拟机回收~
嗯 想知道释放内存的时机代码在哪?比如我调用gc的时候,是怎样让native的引用计数减少或释放的?我看了下 不知道是在哪里有做这个操作
在 cocos2d_specifics.cpp 中,看一下 jsb_FinalizeHook 这个类的代码,在它的 finalize 函数中,它是通过 js_add_FinalizeHook 来注册的。
也可以看下我这篇文章: