Java编译生成的.class文件存的是字节码,那么.net EXE中究竟是IL还是机器码? 我认为是IL,不知对否?如果是IL,那么每次执行EXE就要进行一次编译? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是IL代码 每次运行时由即时编译器(JIT)负责编译成本机代码,但是针对IL代码中的相同方法JIT只编译一次,然后将其缓存在动态内存中,下一次调用相同的方法或代码段时直接取用就行了. 那么是不是每次运行EXE都有一次编译过程,哪怕第二次运行的指令集与第一次完全相同? 都有.每个exe都有一条跳转到mscoree.dll的_CorExeMain函数的机器码._CorExeMain会负责初始化运行环境并查找exe镜像中的IL并运行.剩下的同一楼. .Net编译好的不是汇编指令,而是IL指令,Java是字节代码JIT 运行时.Net装载入口Assembly,CLR公共语言运行时运行代码创建主应用程序域,然后CLR提取代码从IL编译为汇编指令并执行,循环到第二部分代码每部分代码都是即时编译(JIT)。代码运行中CLR监视内存使用情况并处理垃圾回收等等。Java 不同的是编译为字节代码,字节代码有一套通用的语法,可以跨平台。字节代码是解释性的。Java程序的跨平台主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的interpreter(解释器)负责将字节码文件解释成为特定的机器码进行运行。 可以用系统提供的NGen.exe工具生成本地代码这样做的好处是加快启动速度,减小程序工作集,但是会降低性能 同意楼上的解释,NGen可以将IL预先编译为本地代码。但是这样会带来相应的问题。所以一般还是默认的IL好一些。 如何解决此类并发事务 BindingList<T>的问题 指针的指针该怎么得到其中的数据了? 调用函数问题 再来一个VB6.0转C# c#如何过滤数组元素不相关的元素 C#中socket怎么接收一个超长的字节数组 byte和byte[]十进制转换成十六进制 大伙帮我看一下(在线等........) 求助:帮编个程序,有报酬 Microsoft Visual C#.net中如何控制最大化的布局? 如何实现:如果一个程序已经运行,再次运行的时候,激活并显示程序的窗口
每个exe都有一条跳转到mscoree.dll的_CorExeMain函数的机器码.
_CorExeMain会负责初始化运行环境并查找exe镜像中的IL并运行.
剩下的同一楼.
这样做的好处是加快启动速度,减小程序工作集,
但是会降低性能