我在.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