0
点赞
收藏
分享

微信扫一扫

Java基础-JVM-JVM简介

Java工程师知识树 / Java基础


什么是JVM

JVM定义

JVM(Java Virtual Machine)意思是Java虚拟机。它是一个虚拟出来的计算机,可在实际的计算机上虚拟各种计算机功能。JVM有自己完善的硬件架构,例如处理器、堆栈和寄存器等,还具有相应的指令系统。

JVM作用

JVM是Java字节码执行的引擎,为Java程序的执行必要的执行,它还能优化Java字节码,使之转换成效率更高的机器指令。

程序员编写的程序最终都要在JVM上执行,JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的。ClassLoader是Java运行时一个重要的系统组件,负责在运行时查找和装入类文件的类。

JVM屏蔽了与具体操作系统平台相关的信息,从而实现了Java程序只需生成在JVM上运行的字节码文件(class文件),就可以在多种平台上不加修改地运行。不同平台对应着不同的JVM,在执行字节码时,JVM负责将每一条要执行的字节码送给解释器,解释器再将其翻译成特定平台环境的机器指令并执行。Java语言最重要的特点就是跨平台运行,使用JVM就是为了支持与操作系统无关,实现跨平台运行。

Java跨平台

Java是一门跨平台语言,所谓跨平台就是,Java源文件会被编译成为字节码文件,不管是Windows,Linux还是Mac,都有其适配的JVM,也就是字节码文件可以随意在这些JVM上去运行。

JVM跨语言

JVM种类

三种JVM

  • Sun公司 Java HotSpot(TM) 64-Bit Server VM
  • BEA JRockit
  • IBM J9 VM

cmd命令java -version查询

解释器和编译器

HotSpot JVM包括一个解释器和两个编译器,解释与编译混合执行模式,默认启动解释执行。

编译器:java源代码被编译器编译成class文件(字节码),java字节码在运行时可以被动态编译(JIT)成本地代码

解释器:解释器用来解释class文件(字节码)

Java代码编译是由Java源码编译器来完成,流程图如下所示:

Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:

JVM程序执行步骤

JVM在整个JDK中处于最底层,负责与操作系统的交互,用来屏蔽操作系统环境,提供一个完整的Java运行环境,因此也称为虚拟计算器。操作系统装入JVM是通过JDK中的java.exe来实现,主要通过以下几个步骤完成。

  1. 创建JVM装载环境和配置。
  2. 装载jvm.dll。
  3. 初始化jvm.dll。
  4. 调用JNIEnv实例装载并处理class类。
  5. 运行Java程序。

JDK/JRE/JVM的区别

JRE包含JVM和一些java API;
JDK包含JRE和一些java开发工具和监控工具;

JVM实例的生命周期

JVM的生命周期:
(1)JVM实例的诞生
当启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点
(2)JVM实例的运行
main()作为该程序初始线程的起点,任何其他线程均由该线程启动。JVM内部有两种线程:守护线程和非守护线程,main()属于非守护线程,守护线程通常由JVM自己使用,java程序也可以标明自己创建的线程是守护线程
(3)JVM实例的消亡
当程序中的所有非守护线程都终止时,JVM才退出;若安全管理器允许,程序也可以使用java.lang.Runtime类或者java.lang.System.exit()来退出。

工作中常见的JVM相关问题:

  1. 运行系统卡死,系统无法访问,直接 OOM 。
  2. 线上 GC (垃圾回收)导致CPU飙升,需要 dump 内存快照,并进行分析。
  3. 新项目上线,需要对系统进行评估,设置 JVM 的参数。
  4. 实际项目中 JVM 参数调优。
举报

相关推荐

JVM-JVM调优基础(理论)

JVM-JVM内存结构(二)

JVM-JVM的垃圾回收机制

JVM简介

【JVM】JVM基础

0 条评论