今天开始给大家分享JVM系列知识,欢迎大家一起学习交流共同进度!

JVM系列(一):JVM基本概念知识笔记_开发语言

1、什么是JVM?

JVM即Java虚拟机,可以理解为一种抽象计算机,它拥有一个指令集,在运行时操作各种内存区域。JVM对Java语言一无所知,它只知道一种特定的二进制格式,即类文件格式,我们写好的Java程序最终交给JVM执行的时候会被编译成二进制格式的类文件,JVM只能读取二进制格式的类文件,所以任何编程语言只要编译后的格式符合要求,本质上都可以在JVM上运行。

2、JVM的运行位置

JVM是运行在操作系统之上的软件。支持跨平台。

JVM系列(一):JVM基本概念知识笔记_java虚拟机_02

3、JVM的版本

HotSpot VM:JDK 默认内置 JVM 是 HotSpot VM,应用最广泛的JVM,大家最常用的就是这个。

BEA JRockit VM:JRockit VM由BEA公司开发。后BEA公司在2008年被Oracle收购,JRockit专注于服务端应用,JRockit内部不包含解释器实现,全部代码都靠及时编译器(JIT)编译后执行

IBM J9 VM :与HotSpot接近,服务器端、桌面应用、嵌入式等多用途VM,广泛用于IBM的各种Java产品号称是世界上最快的Java虚拟机。

4、JVM的体系结构

JVM系列(一):JVM基本概念知识笔记_开发语言_03

类加载器:在JVM启动时或者是在类运行时将需要的class文件加载到JVM中。

执行引擎:负责执行class文件中包含的字节码指令,相当于实际机器上的CPU

内存区域:jvm将内存划分为若干个区以模拟实际机器上的存储、记录和调度功能模块

本地方法调用:调用C或C++实现的本地方法的代码返回相应的结果

5、JVM的生命周期

5.1 虚拟机的启动

JVM的启动是通过引导类加载器(BootstrapClassLoader )创建一个初始类(initial class)来完成的,这个类是虚拟机的具体实现来指定的。

5.2 虚拟机的执行

一个运行中的Java虚拟机有着一个明确的任务:执行Java程序

程序开始执行时JVM才运行,程序结束时它就停止。

其实执行一个Java程序的时候,本质上执行的是一个叫做JVM的进程。

5.3 虚拟机的退出

  • 程序正常执行结束
  • 程序在执行过程中遇到了异常或错误而被迫异常终止。
  • 由于操作系统自身出现错误而导致Java虚拟机进程终止。
  • 某线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次exit或halt操作。
  • JNI(Java Native Interface)规范描述了用JNI Invocation API来加载或卸载 Java虚拟机时,Java虚拟机的退出