微擎如何做网站,关于机场建设的网站,邯郸做网络推广的公司,中国工业品网文章收录在网站#xff1a;http://hardyfish.top/
文章收录在网站#xff1a;http://hardyfish.top/
文章收录在网站#xff1a;http://hardyfish.top/
文章收录在网站#xff1a;http://hardyfish.top/ 即时编译 Java编译器经过解释执行#xff0c;其执行速度必然会比…文章收录在网站http://hardyfish.top/
文章收录在网站http://hardyfish.top/
文章收录在网站http://hardyfish.top/
文章收录在网站http://hardyfish.top/ 即时编译 Java编译器经过解释执行其执行速度必然会比直接执行可执行的二进制字节码慢很多。 为了解决这种效率问题引入了 JITJust In Time 即时编译 技术。 当JVM发现某个方法或代码块运行特别频繁的时候就会认为这是热点代码: JIT会把部分热点代码翻译成本地机器相关的机器码并进行优化然后再把翻译后的机器码缓存起来以备下次使用。 热点检测 目前主要的热点代码识别方式是热点探测HotSpot虚拟机中采用的主要是基于计数器的热点探测。 采用这种方法的虚拟机会为每个方法甚至是代码块建立计数器统计方法的执行次数。 某个方法超过阀值就认为是热点方法触发JIT编译。 编译优化 JIT在做了热点检测识别出热点代码后除了会对其字节码进行缓存还会对代码做各种优化。 逃逸分析锁消除锁膨胀方法内联等。 逃逸分析 当一个对象在方法中被定义后它可能被外部方法所引用例如作为调用参数传递到其他地方中称为方法逃逸。 有了逃逸分析可以判断出一个方法中的变量是否有可能被其他线程所访问或者改变基于这个特性JIT做了一些优化 标量替换栈上分配 通过逃逸分析Hotspot编译器能够分析出一个新的对象的引用的使用范围从而决定是否要将这个对象分配到堆上。 标量替换 如果经过逃逸分析发现一个对象不会被外界访问经过JIT优化就会把这个对象拆解成若干个其中包含的若干个成员变量来代替。 栈上分配 经过逃逸分析技术发现这个对象并没有被外部引用且仅在当前线程使用那么它就会将该对象分配在栈上。 锁消除 逃逸分析某些没有被外部方法或者其他线程引用的情况下会将某些锁消除。 方法内联 对于可以内联的方法直接复制到调用者代码中减少方法调用次数和性能消耗。