C# mono和microsoft.net中jit的内存开销

C# mono和microsoft.net中jit的内存开销,c#,mono,jit,C#,Mono,Jit,我们知道jit将生成本机代码并将它们放入内存进行缓存。 许多jit实现都有相当大的内存开销,但很少有研究对此进行描述。 Mono可以创建一个配置文件,并显示使用了多少大小的jit生成的代码。 JIT summary Compiled methods: 401 Generated code size: 176811 但是我没有一些好的例子来测试这一点。 我想知道: 1.在正常情况下,jit内存开销是否比mono或microsoft.net大 2.本机代码是否会多次生成相同的il代

我们知道jit将生成本机代码并将它们放入内存进行缓存。
许多jit实现都有相当大的内存开销,但很少有研究对此进行描述。
Mono可以创建一个配置文件,并显示使用了多少大小的jit生成的代码。

JIT summary
    Compiled methods: 401
    Generated code size: 176811
但是我没有一些好的例子来测试这一点。
我想知道:
1.在正常情况下,jit内存开销是否比mono或microsoft.net大
2.本机代码是否会多次生成相同的il代码,因为它们位于不同的线程或appdomain中? 如果我创建10000个线程,一些本机代码也会重复10000次?
3.如何减少开销?
例如:aot,禁用内联

请一次只问一个特定的问题。生成机器代码的大小与此无关。如您给出的示例,它使用0.008%的可用VM。在64位进程中要少得多。做任何事情来优化这当然是完全浪费你的时间。在我的研究中,mono生成的机器代码的内存开销很小。但我不确定,我想了解更多细节。我在jit运行时运行服务的经历非常糟糕,我不会指出这是什么语言,但它在机器代码存储上浪费了大约50%~70%的内存。