Scala Interpreter scala.tools.nsc.interpreter.IMain内存泄漏

时间:2011-10-16 22:36:10

标签: scala

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

var interpreter = new IMain
while (true)
{
    interpreter.interpret(some code to be run on the fly)
}

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

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
    }
}

但是,我仍然看到内存使用率正在上升。似乎Jain实例不会被JVM垃圾收集。

有人可以帮我解决这个问题吗?我真的需要能够保持我的程序运行很长一段时间而不重新启动,但我无法负担scala解释器的这种内存使用。

提前致谢,

宠物

1 个答案:

答案 0 :(得分:0)

尝试在重新分配之前调用解释器上的close方法