2011-03-06 116 views
5

我正在考虑让有限的使用C#的关键字dynamic的。我的initial time trials令人吃惊 - 在100,000次迭代中性能降低不到1秒(可能是由于DLR缓存)。DLR的内存占用量是多少?

我没有访问内存设置,虽然和Eric Lippert wrote

然后,它开始了DLR [...]的DLR 然后启动的 C#的一个特别版本编译器...

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

+2

我个人不会担心在编译成像C#这样的字节码的高级垃圾收集语言中使用DLR的脚印。 – dtech 2011-03-06 17:23:02

+1

可以访问分析器。缓存是DLR的关键,你的缓存状态看起来不像我的。 – 2011-03-06 18:12:37

回答

11

在动态代码垃圾收集时,它卸载?

问题预设了一个不正确的前提;动态生成的代码不是在当前实现中收集垃圾。它被缓存,缓存直到应用程序被拆除。当最后一次特定的代码路径将被称为我们不知道。

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