面试必知——JVM
JVM(Java Virtual Machine,Java虚拟机)是JRE的核心组成部分,承担分析和执行Java字节码的工作。是虚构出来的计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域,具有一次编译导出执行的特点。
JVM基本特性:基于栈的虚拟机;符号引用垃圾回收机制;通过明确清晰基本类型确保平台无关性;网络字节序
JVM原理
JVM是Java的核心与基础,在Java编译器和os平台之间的虚拟处理器,利用团建方法实现的抽象计算机基于下层的操作系统和硬件平台,可以执行Java字节码程序。
Java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过制定平台运行。
JVM体系结构
JVM由类加载器子系统(用来装载.class文件),执行引擎(执行字节码,或者执行本地方法),运行时数据区(方法区,堆,栈,PC寄存器、本地方法栈)
方法区:存放类型信息和运行时的常量池,线程共享。
堆:所有new的对象都存在堆中,并且是线程共享的。
PC:线程私有,存放下一条字节码指令的地址
栈:线程私有,存放局部变量和中间计算结果
JRE(Java Runtime Environment,Java运行环境),所有Java程序都需要在JRE下才能运行。是由Java API和JVM组成,JVM通过类加载器加载Java应用,并通过Java API进行执行。
JDK(Java Development Kit)是程序开发者用来编译、调试Java程序的开发工具包。