DLR的内存占用量是多少?

Tru*_*ill 5 c# memory dynamic-language-runtime dynamic c#-4.0

我正在考虑限制使用C#的dynamic关键字.我的初始时间试验令人惊讶 - 100,000次迭代的性能下降不到一秒(可能是由于DLR缓存).

但是,我无法访问内存分析器,Eric Lippert写道:

然后它启动DLR [...] DLR然后启动一个特殊版本的C#编译器......

这是什么内存占用,并在动态代码被垃圾收集时卸载?

Eri*_*ert 11

当动态代码被垃圾收集时它被卸载了吗?

这个问题预示着一个不正确的前提; 动态生成的代码不是当前实现中的垃圾回收.它被缓存并且缓存一直存在,直到appdomain被拆除.我们不知道上次调用特定代码路径的时间.

如果您想知道对虚拟内存,堆内存,专用字节,共享字节等的影响,那么我的建议是您使用内存分析器来回答这些特定问题.你可能会感兴趣的是六种不同的"记忆足迹",我不知道哪一种与你有关.使用适当的工具来衡量您感兴趣的内容,然后您就会知道.