扫盲:
1、jvm定义
JVM就是java虚拟机,它是一个虚构出来的计算机,可在实际的计算机上模拟各种计算机的功能。JVM有自己完善的硬件结构,例如处理器、堆栈和寄存器等,还具有相应的指令系统。2、jvm作用 JVM是java字节码执行的引擎,还能优化java字节码,使之转化成效率更高的机器指令。 JVM中类的装载是由类加载器和它的子类来实现的,类加载是java运行时一个重要的系统组件,负责在运行时查找和装入类文件的类。 不同的平台对应着不同的JVM,在执行字节码(class文件)时,JVM负责将每一条要执行的字节码送给解释器,解释器再将其翻译成特定平台换将的机器指令并执行,这样就实现了跨平台运行。 3、JVM工作原理 JVM在整个JDK中处于最底层,负责与操作系统的交互。操作系统装入jvm是通过JDK中的java.exe来实现的,具体步骤如下: a、创建JVM装载环境和配置; b、装载jvm.dll; c、初始化jvm.dll; d、调用JNIEnv实例装载并处理class类; e、运行java程序JVM模型图:
1:Class Loader 类加载器:
2:Execution Engine 执行引擎负责解释命令,提交操作系统执行:
3:Native Interface 本机接口
4:Runtime data area 运行数据区
本地库接口:是JAVA刚开发出来时,预留给和其他语言对接的接口例如C:
方法区:所有定义的方法的信息都保存在该区域,次区域是共享区间。静态变量 +常量+运行时常量池存在方法区中+实例变量存在内存中
PC Register: 程序计数器:每个线程都有一个程序计数器,就是一个指针,指向方法区中的方法字节码(下一个将要执行的指令码),由执行引擎读取下一条指令,是一个 非常小的内存空间,几乎可以忽略不记:(主要作用就是保证main方法中的代码的执行的顺序)
JVM的调优:
根据淘宝周志民,所说,jvm的调优(共享区域)90%是调堆,10%是方法区:
---------------------- 栈管运行,堆管存储 -------------------