带有蓝图RPC函数的BlueprintGeneratedClass将永不GC,是否有好解决方案让他GC

目前项目在开发无限技能模块,遇到OOM,发现​部分BlueprintGeneratedClass一直未被GC。经过分析得知:

一个蓝图Actor,在蓝图中定义了RPC函数,UNetDriver::AddReferencedObjects中会给RPC类型的UFunction添加引用,UFUNCTION的Outer是这个蓝图Class,会使这个蓝图Class无法被释放。相关源码如下。[Image Removed]

重现步骤

hello,这个UFunction是什么时候添加到NetDriver中的?你能通过控制台命令行obj refs -name=ObjectName打印下引用链看下吗?或者补充一个简单的重现方式?

[Image Removed]

看起来你们把GA设为了Cluster,如果NetDriver的RepLayoutMap缓存了RPC的UFunction和对应的Outer Class(引擎会对参与网络复制的类和函数创建一个FRepLayout)我觉得可以理解,即使移除这个FunctionRepLayout,下次ProcessRemoteFunction调用这个RPC也还会再注册一遍