UE4 Unlua源码解析12 - Lua与UE4的混合GC

Lua与UE4的混合GC

          • 怎么做到Lua中持有的UE对象,不被UE GC
          • 怎么做到Lua中停止持有UE对象时,UE也能GC掉
          • 怎么做的UE中持有的Lua对象,不被Lua GC
          • 怎么做到UE中停止持有Lua对象时,Lua能GC掉

我们知道,UE4中实现了AddReferencedObjects接口,或者用UPROPERTY宏标记的对象,会被纳入自动GC管理中,当没有对象引用此Object时,自动GC,Lua也是类似,当一个表没用其他对象引用的时候,会自动GC,那么Unlua中,我们可以看到UObject除了被UE引用,还会被Lua端引用,那么假如什么都不管,UE的对象在不被引用的时候自动GC,但是Lua还引用他,便会访问到脏数据,那么Unlua是怎么解决的呢?

怎么做到Lua中持有的UE对象,不被UE GC

Lua对象在和UObject绑定的时候,会在代码中将UObject加入不GC的对象FGCObject的ReferencedObjects,这样,确保了Lua中访问的UObject对象实例不会被UE GC自动回收

你可能感兴趣的:(UE4心血所著,lua,ue4,开发语言)