JVM : java虚拟机,模拟计算机达到计算所具有的计算功能。
包括几个组成部分: 1 指令集 -计算机识别的机器语言的命令集合
2 计算单元 -识别并控制指令执行的功能模块
3 寻址方式 - 地址的信息,运行规则等。
4 寄存器定义-包括多种寄存器的定义、数量和使用方式。
5 存储单元-能够存储操作数和保存操作结构的单元。比如: 内存和磁盘。
以上五个部分和代码关联最密切的是指令集部分。
指令集:
在cpu中用来计算和控制计算机系统的一套指令的集合。是体现CPU性能的一个重要指标。
主流的有精简指令集和复杂指令集。通常使用的是复杂指令集。
指令集和汇编语言的关系?
指令集是可以直接被机器识别的机器码,以二进制格式存在于计算机中。
汇编语言是可以被人识别的语言,在顺序和逻辑上与机器指令一一对应。
也即是说,汇编语言是为了让人记住机器指令的助记符。
指令集和CPU架构有关系?
汇编语言是对寄存器和段的直接操作的命令,而寄存器和段是架构的一部分,
所以不同的架构对应相应的指令集。由于操作系 统是管理计算机的真正入口,
如果操作系统不支持某种芯片的指令集,程序无法执行。cpu要适用于相应的指令集,匹配操作系统。
JVM和实体机的区别?
一个抽象的规范。官方的规范约束了JVM。
一个具体的实现。 不同的厂商根据这个抽象规范用软件或者软硬件结合的方式在相同或者不同的平台上的具体的实现。
一个运行的实例。 运行一个java程序时,它就是一个运行中的实例,每个运行中java程序就是一个jvm实例。
jvm也有自己的指令集,称为jvm字节码指令集。符合class文件规范的字节码都可以被jvm执行。
JVM体系结构
类加载器 : 在jvm启动时或在类运行时将需要的class加载到JVM中。每个被JVM装载的类型都有一个对应的java.lang.Class类
的实例来表示该类型,该实例可以唯一表示被JVM装载的class类,要求这个实例和其他类的实例一样都存在java堆中。
执行引擎 : 执行引擎的任务是负责执行class文件中包含的字节码指令,相当于实际机器上的cpu 。执行引擎是jvm的核心部分,执行引擎的作用就是解析jvm字节码指令,得到执行的结果。执行引擎具体采取什么方式由jvm的实现厂家实现。有直接解释执行、采用JIT技术转成本地代码执行、采用寄存器芯片模式执行等方法,sun的hotspot是基于栈的执行引擎。实质上执行引擎执行的是方法体内的代码,是代码的执行流程,对应的就是java中的线程,所以也可以说java线程是执行引擎的实例。
内存区: 将内存区划分成不同的模块。一个jvm实例会包括: 方法区、java堆、java栈、pc寄存器和本地方法区。
方法区和java堆是所有线程共享的,
本地解