我正在使用 Qt 5.12 组合一个应用程序,用户将在其中加载通过其 API 与应用程序交互的 JS 脚本。这些脚本被捆绑到“项目”中(即多个相互依赖的JS模块),并且任何时候我都希望只有一个项目加载到JS引擎中,所以如果用户加载不同的项目,我想要前一个要清理的上下文。
根据文档,我假设如果我只是删除 QJSEngine 对象并创建一个新对象,这将允许我创建一个新的 JS 上下文。
QJSEngine* jsEngine = new QJSEngine();
// Load JS modules and run code...
jsEngine->collectGarbage();
delete jsEngine;
jsEngine = new QJSEngine();
// Load new JS modules...
当我尝试运行此代码时,我在delete jsEngine
. 这真的很奇怪,因为文档本身就说明了
QJSEngine 销毁期间不会从持久 JS 堆中收集垃圾。如果您需要释放所有内存,请在销毁 QJSEngine 之前手动调用 collectGarbage。
这对我来说意味着我应该能够做到这一点。有人有想法么?提前致谢!