예외를 throw 프로그램의 실행을 계속 메모리 부족을 던졌습니다 말한다 :로슬린 스크립팅 API 내가 로슬린 ScriptingAPI을 사용하고
메모리가 부족하여 프로그램
의 실행을 계속 컴파일 할 때 여러 문자열 스크립트, 이런 하나 하나 :
foreach (string script in scripts)
{
var evalFunc = CSharpScript.Create(script, roslynOptions, typeof(ParamsVM));
evalFunc.Compile();
cachedScripts.Add(rule.Formula,evalFunc);
}
이 나는 일에 나중에 사용하기 위해 모든 컴파일 된 스크립트를 저장할 수 있습니다 생각 데이터 항목은 많지만이 저장 때문에 메모리가 ~ 4GB에 도달합니다.
필요할 때마다 각 스크립트를 사용하면 (나중에 데이터 항목을 반복 할 때) 각 스크립트가 반복해서 컴파일됩니다.
이러한 사용 사례에 대한 해결책은 무엇입니까?
가장 자주 사용되는 캐시를 캐시 할 수 있습니까? – BugFinder
모든 스크립트는 내가 가지고있는 모든 데이터 집합에 사용됩니다. – Dabbas
@BugFinder : 다른 app-domain에로드하지 않으면이 프로세스에서 생성하는 "메모리 내 DLL"을 jetison으로 만들 수 없습니다. appdomain이 코드를로드 할 때, 그것은 일방적 인 과정이다. 그래도 appdomains를 언로드 할 수는 있습니다 ... 어느 시점에서, MEF와 같은 것을 채용하여 작업을 완료하는 것이 좋습니다. – spender