我的面试经之JVM(一)JVM简述
Java 跨平台语言 JVM 跨语言平台 Java进化史: 虚拟机:Virtual Machine,对硬件进行模拟的软件,虚拟的计算机 Java虚拟机:执行Jvm字节码的虚拟计算机,是二进制字节码的运行环境 JVM的位置 jvm整体结构 方法区和堆,多个线程共享 Java栈(又叫虚拟机栈),本地方发栈,程序计数器这三个每个线程独有一份 【运行时数据区是单例的,一个虚拟机一个】 【hotspot 才有方法区,其他两大商用虚拟机没有【HotSpot,JRocket,J9】】 class files前边是编译器前端 执行引擎相当于编译器后端 java代码执行流程 第一次编译,把java源文件编译成字节码.class文件,第二次编译JIT编译器把.class文件编译成机器指令文件,并且缓存到方法区 JVM架构模型 指令集架构分为两种,基于栈的指令集架构,基于寄存器的指令集架构 两种指令集架构区别 基于栈式架构的特点: 设计和实现简单【每执行一个方法,就进行一次入栈的操作】,适用于资源受限的系统(eg:嵌入式) 避开了寄存器的分配难题;使用零地址指令分配方式 指令流中的指令大比分是零地址指令,其执行过程依赖于操作栈,指令集更小,编译器容易实现 不需要硬件实现,可以执性更好,更好实现跨平台 基于寄存器架构的特点: 典型的是x86的二进制指令集