首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IronPython内存使用率

IronPython内存使用率
EN

Stack Overflow用户
提问于 2009-03-04 11:11:19
回答 3查看 1.3K关注 0票数 2

我在一个基于c#的WebService中托管IronPython,以便能够提供自定义扩展脚本。然而,当我通过在循环中重复执行webservice进行简单的负载测试时,我发现内存使用量急剧增加。

IronPython-1.1在其对象上实现了IDisposable,以便您可以在它们完成时处理它们。基于DLR的新IronPython-2引擎没有这样的概念。

据我所知,每次在ScriptEngine中执行脚本时,都会在应用程序域中注入一个新的程序集,并且无法卸载。

有什么办法可以解决这个问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-03-05 04:03:28

事实证明,在aspnet_wp达到500mb时,垃圾收集器开始工作并清理垃圾。然后,内存使用量下降到20mb左右,并在负载测试期间再次开始稳步增加。这样就没有内存“泄漏”了。

票数 0
EN

Stack Overflow用户

发布于 2009-03-04 17:28:46

您可以尝试在每次运行IronPython脚本时创建一个新的AppDomain。虽然assembly不能从内存中卸载,但您可以卸载AppDomain,这将允许您将注入的程序集从内存中取出。

票数 1
EN

Stack Overflow用户

发布于 2009-03-05 02:03:58

您需要禁用优化的代码生成:

代码语言:javascript
复制
var runtime = Python.CreateRuntime();
var engine = runtime.GetEngine("py");
PythonCompilerOptions pco = (PythonCompilerOptions)engine.GetCompilerOptions();
pco.Module &= ~ModuleOptions.Optimized;

// this shouldn't leak now
while(true) {
   var code = engine.CreateScriptSourceFromString("1.0+2.0").Compile(pco);
   code.Execute();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/610128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档