我对Java的了解不是很好,所以我想问一下这种语言是如何工作的.我不仅指“语言”,还指虚拟机.
这是我的理解.
> Java编译器将代码转换为Java字节代码.以.java文件的形式
>当文件运行时,JVM读取(及时)字节码并将其转换为机器码.
>计算机读取机器代码,程序似乎像编译程序一样运行(对用户).
这绝对错了吗?
解决方法:
已经有很多答案,但我遗漏了一个重点:
“2. when the file is run, the JVM reads (just in time) the byte-code and turns it into machine code.”
这不太正确.
> JVM首先解释代码
>它看着最耗时的部分,热点
>它分析跟踪,即典型的执行流程
>它生成针对热点和迹线优化的机器代码
代码中耗时较少的部分可能会被解释.如果情况发生变化(例如,通过加载新类),某些已编译的代码可能会显示为不再优化甚至不正确,并且它会被丢弃并且JVM恢复解释一段时间,然后再次重新编译它.
标签:java,jvm
来源: https://codeday.me/bug/20190730/1579840.html