坐标地址

看清楚-----那个飞的风筝才是我

 

Java学习01 (第一遍)

java se - 桌面

java ee - 网页

Jdk :Jre 区别
Jdk-开发环境必要
Jre-运行环境需要
Jdk包含Jre,安装完Jdk就可以了

Javac Demo1.java
-Javac 编译源代码(前端编译),生成Demo1.class,java字节码文件
Java Demo1
-Java 运行Demo1.class文件,加载到JVM,JVM将字节码解释为平台机器指令进行运行,所以给出class文件就可以了,不用给源码,对一般的Java方法而言,编译后代码的大小相对于字节码的大小,膨胀比达到10x是很正常的。

编译技术大约分为两种,一种AOT,只线下(offline)就将源代码编译成目标机器码,这是普遍用在系统程序语言中;另一种是JIT,只及时的编译,但是大部分的JIT引擎,针对的是将IR(中间代码,如JavaByteCode) 在运行时, 有针对性的翻译成机器码。

最早的Java建置方案是由一套转译程式(interpreter),将每个Java指令都转译成对等的微处理器指令,并根据转译后的指令先后次序依序执行,由于一个Java指令可能被转译成十几或数十几个对等的微处理器指令,这种模式执行的速度相当缓慢。

 

工作原理 
当JIT编译启用时(默认是启用的),JVM读入.class文件解释后,将其发给JIT编译器。JIT编译器将字节码编译成本机机器代码。 

通常javac将程序源代码编译,转换成java字节码,JVM通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必然会比可执行的二进制字节码程序慢。为了提高执行速度,引入了JIT技术。 

在运行时JIT会把翻译过的机器码保存起来,已备下次使用,因此从理论上来说,采用该JIT技术可以,可以接近以前纯编译技术。 

2.相关知识 
JIT是just in time,即时编译技术。使用该技术,能够加速java程序的执行速度,当虚拟机发现某个方法或代码块运行特别频繁时,就会把这些代码认定为“Hot Spot Code”(热点代码).

JIT并不总是奏效,不能期望JIT一定能够加速你代码执行的速度,更糟糕的是她有可能降低代码的执行速度。这取决于你的代码结构,当然很多情况下我们还是能够如愿以偿的。 

从上面我们知道了之所以要关闭JITjava.lang.Compiler.disable(); 是因为加快执行的速度。由于JIT对每条字节码都进行编译,造成了编译过程负担过重。为了避免这种情况,当前的JIT只对经常执行的字节码进行编译,如循环等

 

posted on 2017-06-26 10:25  Augur  阅读(183)  评论(0编辑  收藏  举报

导航