我有一个使用Spidermonkey的C ++项目(游戏),我无法弄清楚导致错误的原因。
我的对象包含他们初始化的编译脚本,然后在每个帧上更新。
当我让游戏空闲大约30秒时,我的一个包装类会调用终结器(因此试图释放相关的对象)。
一切正常,直到调用终结器,我无法弄清楚它在做什么。在完成时,程序崩溃,因为关联的对象仍然在脚本端尝试释放的本机端使用。例如,玩家获得了自由,这显然是不对的。
文档根本没有帮助我,因为它似乎主要是过时的(但它们不会删除页面上的文本?)。谷歌搜索也没有帮助。我已经尝试在构建JSObject时对其进行生根,但这没有帮助。
有没有人对Spidermonkey垃圾收集器有任何经验?任何人都能说出发生了什么吗?
编辑:如果上面的图片太小,您可以按住Ctrl键将其放大或在新标签中查看。
编辑:我的Spidermonkey版本是从Firefox nightly rev 130468构建的(回购告诉我的是7周大了吗?)。我真的不确定版本号是什么,抱歉。这是最近的。编辑:我更新到了https://developer.mozilla.org/en-US/docs/SpiderMonkey托管的版本17.0。它没有解决我的GC问题,但最终确定了事情。