首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala解释器scala.tools.nsc.interpreter.IMain内存泄漏

Scala解释器scala.tools.nsc.interpreter.IMain内存泄漏
EN

Stack Overflow用户
提问于 2011-10-17 06:36:10
回答 1查看 409关注 0票数 1

我需要使用scala解释器编写一个程序来动态运行scala代码。解释器必须能够在不重启的情况下运行无限数量的代码。我知道每次调用类scala.tools.nsc.interpreter.IMain的方法interpret()时,都会存储请求,因此内存使用量将永远上升。以下是我想要做的事情:

代码语言:javascript
复制
var interpreter = new IMain
while (true)
{
    interpreter.interpret(some code to be run on the fly)
}

如果方法interpret()每次都存储请求,那么有没有办法清除存储的请求的缓冲区?例如,我现在要做的是计算方法interpret()被调用的次数,然后在次数达到100时获得一个新的IMain实例。下面是我的代码:

代码语言:javascript
复制
var interpreter = new IMain
var counter = 0
while (true)
{
    interpreter.interpret(some code to be run on the fly)
    counter = counter + 1
    if (counter > 100)
    {
         interpreter = new IMain
         counter = 0
    }
}

然而,我仍然看到内存使用率永远在上升。看起来IMain实例并没有被JVM垃圾回收。

有人能帮我解决这个问题吗?我真的需要能够让我的程序在不重启的情况下运行很长一段时间,但我不能只为scala解释器使用这样的内存。

提前谢谢你,

宠物

EN

回答 1

Stack Overflow用户

发布于 2011-10-25 00:14:38

在重新赋值之前,尝试调用解释器上的close方法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7787831

复制
相关文章

相似问题

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