chexiongsheng
chexiongsheng
> @chexiongsheng Android 和 iOS 的 V8 能用 chrome://inspect/#devices 连接调试器? 有啊,但出于安全考虑,默认不编译进手机版本,有需要可以在CMakeList那加个WITH_INSPECTOR宏,自己编译一份
有引用就肯定不释放。 没引用也要等gc完成一个full gc才会释放。 你试试切场景时调用FJsEnv上的LowMemoryNotification函数,通知v8加快gc。
别给我描述那些乱七八糟的关系,我没时间看,而且你也不一定描述准确。 世界上所有gc都是一个规则,上上层楼已经描述了,细细体会,然后看要怎么做。 这仅仅处理puerts的bug或者需求,编程基础不在这里科普。
> 主要就是想问的是,ts对象持有蓝图资源对象时,ts对象被释放了,会自动释放它的成员变量(蓝图资源对象)嘛?还是说要手动赋值null 这也是gc的知识
如果持有者没引用,并不需要赋值为null。 需要赋值为null,证明持有者有引用。 v8不至于有这种低级错误,至少比你(觉得持有者没应用)的分析靠谱几十亿倍
看不出是不是和puerts有关。这种情况也可能是那个对象本身是坏的。 你看能不能基于puerts_unreal_demo提供个重现的最小工程
看上去是这的moduleFileName为空了 https://github.com/Tencent/puerts/blob/5a7d94859133674ca91a4da17eccc9ac2c45f77c/unreal/Puerts/Content/JavaScript/PuertsEditor/CodeAnalyze.js#L1367 我对了下1.0的代码,这块的处理并没什么变化。也没有人反馈类似的问题,你能在puerts_unreal_demo上重现么?
最早的Get就是返回引用,但后面出于安全考虑,改为值拷贝了:https://github.com/Tencent/puerts/commit/b37dbb8bacee3f243fbfea2bf1394dfd5e91fa5a 添加个名字不同,和原来Get逻辑一样的函数就可以了。
不过我觉得添加这么个接口挺混淆的,当元素是int之类的基本类型,或者FString这些,都是值拷贝,只有类似Struct,Array这些才是返回引用(这在unlua里也是)。换句话说,接口名字和真实功能不符合,所以我不会加这样的接口,有需要你可以自行添加。
ReceiveBeginPlay下设置应该没问题的