.Net 7 的 AOT 和 CLR有什么区别?
楔子:
AOT和 CLR的区别是什么呢rundll32 exe是什么 ?
大部分人肯定会说,一个编译成本地机器码(Native Code),一个是JIT即时编译的结果rundll32 exe是什么 。
这么说,其实也对,但是不具体rundll32 exe是什么 。具体应该怎么看呢?
AOT
AOT实际上是为了静态编译做的一个变体,一直在不停的循环进化,它并不是.Net Core之后才有的,之前的.Net FrameWork也是有的rundll32 exe是什么 。
在windows上,AOT是通过ilc.exe来加载托管的DLL,然后把这个DLL编译成.Obj文件rundll32 exe是什么 。此后通过运行时也就是CLR来链接到这个.Obj文件,生成你最后看到的那个超大的Exe文件。
CLR
CLR的编译过程其实大家都清楚rundll32 exe是什么 ,具体如下:
源码 -》Rosyln(编译成托管DLL) -》CLR(加载DLLrundll32 exe是什么 ,并且调用RyuJit) -》RyuJit(编译成机器码)
区别
因为RyuJit是个即时的编译器,也就说你启动一个.Net程序之后,程序里面需要运行的数据就会加载到内存里面rundll32 exe是什么 。如果你把这个程序给关掉了,内存就会被清除,之前的数据完全不存在。所以叫做即时编译。
而AOT则不同,它会保存编译的结果,然后在调用的时候进行结果的跳转rundll32 exe是什么 。
注意了,AOT同样有CLR和GC,只不过它的CLR是通过Hostfxr来进行宿主调用的,而它的GC则是通过.Obj文件链接编译到了Exe里面rundll32 exe是什么 。
你同样的反编译它,依然可以看到托管的代码rundll32 exe是什么 。
结尾:
总体来说,AOT形成了一个独立的编译体系,有区别与目前的.Net 7 CLR rundll32 exe是什么 。
有人说微软以后可能会用AOT编译技术取代CLR,以微软的一贯尿性,还是极有可能的rundll32 exe是什么 。
到时候大家,可能又要使劲的学习啦rundll32 exe是什么 。
爱资源吧版权声明:以上文中内容来自网络,如有侵权请联系删除,谢谢。