Oracle 的 JDK 包括两部分内容:一部分是将 Java 源代码编译成 Java 虚拟机的指令集的编译器,另一部分是用于Java 虚拟机的运行时环境。

第一部分应该说的是 Javac 这个前置编译器,用于将Java源代码编译成字节码。第二部分是说 JIT 即时编译器,用于在JVM运行时进行进一步优化,将字节码编译成本地机器码。

即时代码生成器(Just-In-Time/JIT Code Generator)就是一种在

Class 文件中的代码被 Java 虚拟机代码加载后,生成与平台相关的特定指令的编译器。

上面这句验证了我的理解,JIT编译器把字节码转成与平台相关的特定指令。

Java 虚拟机代码将使用 Oracle 的 javap 工具所生成的非正式的“虚拟机汇编语言(Virtual Machine Assembly Language)”格式来描述。

原来javap生成的那份东西叫做:虚拟机汇编语言!涨知识了!

下面是一个Java代码的字节码指令,通过这个例子了解下字节码指令,非常不错。

void spin() {
int i;
for (i = 0; i < 100; i++) {
; // Loop body is empty
}
}

对应的字节码指令:

Method void spin()
0 iconst_0 // Push int constant 0
1 istore_1 // Store into local variable 1 (i=0)
2 goto 8 // First time through don’t increment
5 iinc 1 1 // Increment local variable 1 by 1 (i++)
8 iload_1 // Push local variable 1 (i)
9 bipush 100 // Push int constant 100
11 if_icmplt 5 // Compare and loop if less than (i < 100)
14 return // Return void when done

下面的各种都是对于字节码指令的解读,有点枯燥,耐心看下去就好了。

JVM规范系列文章目录

最新文章

  1. C++常见笔试面试要点以及常见问题
  2. static 作用
  3. [No000062]读书八字诀:怎样将书读得通透?
  4. asp.net 文件批量移动重命名
  5. CSS 总结
  6. web前端网页开发一般过程
  7. linux下一个eclipse组态jdk
  8. 使用AIR进行移动APP开发常见功能和问题(下)
  9. JAVA NIO工作原理及代码示例
  10. git 同步勾子
  11. css中的position(定位)
  12. 洛谷P2822 组合数问题(题解)
  13. Cena评测系统在win10中测评cpp程序
  14. python 将文件描述符包装成文件对象
  15. 118. Pascal&#39;s Triangle (java)
  16. Repeater绑定数组
  17. log4j的配置详解(转)
  18. docker 入门 (二)基本操作
  19. vuejs绑定img 的src
  20. Visio中锁定元件

热门文章

  1. (小技巧)Sql server查看sql语句的执行时间(转)
  2. 洗礼灵魂,修炼python(43)--巩固篇—经典类/新式类
  3. 游标和递归sql 的一些代码
  4. 简单易懂的程序语言入门小册子(1):基于文本替换的解释器,lambda演算
  5. 用Python实现数据结构之优先级队列
  6. pyenv离线安装python各版本
  7. BeanFactory中Bean的生命周期
  8. IP与子网掩码
  9. web自动化--如何在不同页面间游刃有余
  10. easyui的datebox控件如何只要年月不要日谢谢知道的说一下