JIT编译器在程序启动后运行,并将代码(通常是字节码或某种类型的VM指令)动态编译(或者即时,就像它所调用的那样),形成通常更快的形式,通常是主机CPU的本机指令集。 JIT可以访问动态运行时信息,而标准编译器则无法进行更好的优化,例如内联频繁使用的函数。
这与在程序首次运行之前将所有代码编译为机器语言的传统编译器形成对比。但我的问题是JIT编译器是否消除了空方法?有人可以给出一个简洁易懂的描述吗?
答案 0 :(得分:1)
不是,我只是通过在我当前的项目中添加一个未使用的函数来测试它,并将dotPeeking添加到exe中。它还在那里。
答案 1 :(得分:1)
即使在发布模式下,您也可以关闭优化。所以我认为你的问题是:在优化模式下删除私有方法。然后答案是否定的。
我认为这里广泛讨论: C# Compiler optimization - Unused methods
(PS:当我复制/粘贴你的标题时,这是谷歌的第一次打击)
答案 2 :(得分:0)
此previous question可能会回答您的问题。它似乎没有编译,但是永远不会调用那些未使用的方法。这似乎不会影响内存占用,因为JIT会根据需要将这些部分带入内存。