怎样查网站的注册地点,互联网网站开发发展,益阳网站开发公司,如何注册网站平台我们都知道要运行Java代码就必须要有JRE#xff0c;也就是Java运行时环境#xff0c;JRE中包含了Java程序的必需组件#xff0c;包括Java虚拟机以及Java核心类库#xff0c;然而运行C代码则不需要额外的运行时环境#xff0c;只需要把代码编译成CPU能识别的指令即可#…我们都知道要运行Java代码就必须要有JRE也就是Java运行时环境JRE中包含了Java程序的必需组件包括Java虚拟机以及Java核心类库然而运行C代码则不需要额外的运行时环境只需要把代码编译成CPU能识别的指令即可也就是机器码那为什么Java不直接像C那样而需要在虚拟机中运行呢他在虚拟机中又是如何运行的接着往下看Java为什么要在虚拟机中运行刚才我们谈到C是直接把代码编译成机器码的但因为各个平台的架构不一样CPU能处理的指令集也不一样所以如果要在另一个平台上运行C代码就必须用该平台对应的C代码编译器重新编译一遍才可以Java一开始就意识到需要跨平台运行所以Java设计了虚拟机先将Java代码编译成字节码(class文件)这是虚拟机能够识别的指令再由虚拟机内部将字节码翻译成机器码所以我们只需要有Java字节码就可以在不同平台的虚拟机中运行这也就是我们一直说的一次编译到处运行Java虚拟机如何运行Java字节码我们JDK所用的虚拟机名为HotSpot虚拟机他会将所有class文件加载进来加载后的Java类会被放置在方法区后面运行时会执行其中的代码Java虚拟机会在内存中划分出几块包括程序计数器本地方法栈Java虚拟机栈堆以及方法区不过光是Java字节码还是无法运行Java虚拟机还需要将字节码翻译成机器码HotSpot有种形式第一种是解释执行即将字节码逐条翻译成机器码并运行第二种是即时编译(JIT)他会将一个方法内的所有字节码编译成机器码再执行前者的优势无需等待编译但逐条解释的代价就是运行速度会比后者慢HotSpot默认采用混合模式它会先解释执行字节码然后对于反复执行的热点代码会去进行即时编译即时编译是监理在复合二八定律的基础上即百分之20的代码占据百分之80的计算资源对于不常用的代码我们无需消耗时间在编译成机器码上采用解释执行就可以而对于热点代码我们可以将其编译成机器码以提升运行速度HotSpot内置了几个即时编译器Client Complier和Server Complier简称为C1、C2编译器以便在编译时间和生成代码的执行效率之间做取舍C1编译时间更快C2编译质量更高