JVM原理(一)JVM通识、JVM架构_多学习多思考-CSDN博客_jvm
一、JVM通识
学习JVM的目的
面试重灾区,我们必须搞懂它。生产过程中,肯定会面临JVM调优相关问题,需要也必须搞懂它。打基础,想搞懂我们java赖以生存的环境长什么样子,提升对Java知识点的理解。
1.1 程序的执行方式
程序执行的方式主要有三种:静态编译执行,动态编译执行和动态解释执行。(编译是指:编译成可让操作系统直接执行的机器码)
静态编译执行语言:C 、C++
动态编译执行(运行中进行编译):JVM
动态解释执行(一行编译一行执行):JVM
1.2 为啥使用JVM
很显然 JVM帮我们屏蔽了操作系统。
如果时C语言直接编译的机器码,在编译之前需要知道目标操作系统,比如Window操作系统编译之后的字节码时无法在 Linux操作系统上运行的。
1.3 机器码和字节码的区别
机器码时电脑CPU直接是识别并读取的机器指令,运行速度很快,但是比较晦涩难懂,难以编写。字节码时一种中间状态的二进制文件,需要直译器翻译转译后才能成功机器码
1.4 JDK JRE JVM之间的关系
显然,JDK包含了 JRE和编译器等一些开发工具,JRE时java程序运行环境。JDK:java开发工具包,既包含了JRE也包含了一些编译工具如:javac javap。 JRE属于java程序运行环境。JVM在JRE中。
1.5 OracleJDK 和 OpenJdk
OrcalJDK 是基于OpenJDK源代码构建的,因此OracleJDK 和 OpenJdk之间没有重大差异。
1.6 JVM和Hotspot之间的关系
JVM是《JVM虚拟机规范》中提出来的规范。
Hotspot是使用JVM规范的商用产品,除此之外还有Oracle JRockit、IBM的J9也是JVM产品
1.7 JVM 和Java之间的关系
JVM只认识 .class文件,但是并不是只有 java文件才可以编译成 class文件
1.8 JVM的运行模式
JVM有两种运行模式:Server模式与Client模式。
两种模式的区别在于:
Client模式启动速度较快,Server模式启动较慢;
但是启动进入稳定期长期运行之后Server模式的程序运行速度比Client要快很多。
因为Server模式启动的JVM采用的是重量级的虚拟机,对程序采用了更多的优化;而Client模式启动的JVM采用的是轻量级的虚拟机。所以Server启动慢,但稳定后速度比Client远远要快。
一、JVM架构
架构主要分为:class file、类加载子系统、运行时的数据区、执行引擎。