我在.NET 4.6下使用了MoonSharp(1.6.0,刚刚更新,之前也有问题)。我有以下的C#代码:为什么MoonSharp DoString泄漏内存?
public class LuaCore {
public static Script script = new Script();
public static DynValue Call(string func)
{
return script.DoString(func);
}
}
好像每当我打电话LuaCore.Call("any code")
附加〜1.5千字节的程序所使用。这也发生在any code
是stuff = nil
,因此“任何代码”。
当这被称为每秒约3500次时,每五秒钟会使用一次额外的25兆字节,每秒的呼叫取决于机器的功率。由于每次更新都会使用多个调用,程序的内存使用量也会增加得更快(测试过)。 5分钟后,我得到一个OutOfMemoryException(使用1.4GB)。
我用应用程序使用1.5GB的RAM拍了堆的快照。看起来解释器正在存储被调用的每个源代码,或者它看起来像使用VS的诊断工具。
为什么MoonSharp在每次调用时都存储那么多数据?
取内存分析器并查看内存中保存了哪些对象以及谁拥有它们。在那之后回答你的问题会容易得多 –
我已经在RAM中添加了一些细节和截图。 – Exec