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

本文详细介绍了在UE4使用Unlua时,如何管理Lua与UE4之间的对象垃圾回收。当Lua持有UE对象时,对象会被添加到FGCObject以避免UE的垃圾回收;而释放UE对象时,需调用Destroy方法。反之,UE持有Lua对象时,对象会存入Lua全局表Registry,防止被Lua GC回收。停止持有时,需从Registry中移除。
摘要由CSDN通过智能技术生成


我们知道,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自动回收

在这里插入图片描述

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

当Lua中停止持有UE对象时,需要手动调用Destroy方法

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

珞珈大胖强TURBO

谢谢兄弟们,我会一直努力出货的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值