为什么Java程序会执行一段时间后跑的更快?
对于Java 应用,程序员之间一个认识口口相传: 要看一个Java程序跑的快不快,需要多跑几次;另外,Java程序跑一段时间之后会快起来。速度甚至能赶上 C/C++程序的速度。 如果你问为什么跑一段时间就快了呢? 一般都能听到 「因为JVM会把调用次数多的热方法编译再执行」的答案。 更通俗的话来讲, JVM 会把热方法编译成机器码,执行效率会更高。就像公司或工厂里,对于一项任务,一般老手都比新人更快,因为老手更熟悉嘛。所以招聘要求里你很少会见到指明要新人的,大部分都是要有工作经验的。 而JVM 将热方法编译生成的机器码,由于是针对当前平台,当前硬件生成的,对应用具体执行情况分析之后进行编译而成,所以就像老手一样,能更了解情况,效率当然更高。 默默在背后做编译工作的人就是 JIT (Just-In-Time) 编译器,一般也叫即时编译器。 今天我们一起来看看,这越跑越快的背后,JIT 具体是怎样工作的。 我们都知道,Java 原生就是解释型语言,也是解释执行的,怎么又有了编译执行了? 执行 java -version 的时候,我们一般能看到当前 Java 版本号之后,会有一个 mixed...

