【发布时间】:2011-05-13 16:01:13
【问题描述】:
从 llvm 2.7 开始,可以隔离类型以及 LLVM 在 llvmContext 中创建 JIT 模块可能需要的任何内容
但是,我不完全清楚如何回收在 llvmContext 中分配的内存资源一旦被使用。我认为应该有一个,因为使用 llvmContext 的目的是从不共享任何依赖项的其他线程中安全地使用它们,但是线程会定期启动和完成,并且不断创建新的 llvmContexts 最终会消耗所有可用的 RAM
【问题讨论】:
从 llvm 2.7 开始,可以隔离类型以及 LLVM 在 llvmContext 中创建 JIT 模块可能需要的任何内容
但是,我不完全清楚如何回收在 llvmContext 中分配的内存资源一旦被使用。我认为应该有一个,因为使用 llvmContext 的目的是从不共享任何依赖项的其他线程中安全地使用它们,但是线程会定期启动和完成,并且不断创建新的 llvmContexts 最终会消耗所有可用的 RAM
【问题讨论】:
是的,LLVMContext 的析构函数将释放其所有内存。如果不是,请提交错误,http://llvm.org/bugs!当然,不要破坏全局 :-)
如果你正在关闭,你也可以调用 llvm::llvm_shutdown() 来释放全局静态变量。请注意,没有 llvm_startup 功能或类似的功能...
【讨论】: