JVM简称Java Virtual Machine
1. 结构
首先,JVM,JRE,JDK是有区别的,是包含与被包含的关系(JVM和类库组成JRE,JRE和一些编译工具组成JDK)。大家都知道java有一句口号,write once,run everywhere。Java是怎么做到编写一次,处处运行的呢?
Java是运行级别的跨平台(.java源文件编译成.class之后到处运行),而C/C++是编译级别的跨平台(一个一个平台编译,因为每个系统层面的调用是不一样的)。
JDK分为,JDK for windows,JDK for linux,JDK for mac,可以理解为JVM for windows等等,为什么JDK还要分这么多版本?因为不同的系统原理一样都是基于高低电频,也就是01001100类似(非量子计算机)。但是操作系统分很多种linux,mac等等,所以JVM软件层是屏蔽了底层硬件,指令层面的细节。
2. JVM运行时数据区
Java运行的最小单位是线程,Java代码就是数据指令和控制。未完,待续。。。
程序计数器
JVM运行的是.class字节码文件,程序计数器会指向当前线程运行到的字节码文件的行号。
虚拟机栈