Loading

深入理解JVM(1)- JVM与Java体系结构

Java虚拟机

Java技术的核心就是Java虚拟机(即JVM,一台执行Java字节码的虚拟计算机),所有的Java程序都运行在Java虚拟机内部。JVM运行在操作系统之上,与硬件没有直接交互,它负责装载字节码都其内部,解释/编译为对应平台上的机器指令执行。
特点:

  • 一次编译,到处运行
  • 自动内存管理
  • 自动垃圾回收功能

JVM的整体结构

目前市面上高性能虚拟机的代表作之一是HotSpot VM。采用解释器与即时编译器并存的结构,其大致结构如图所示。

Java代码执行流程

JVM的架构模型

指令集架构有两种:基于栈的指令集架构基于寄存器的指令集架构
不同平台CPU架构不同,基于寄存器的架构显然无法实现跨平台性,因此Java编译器输入的指令流采用的是第一种方式,这种方式能够跨平台使用、指令集小、编译器实现起来也容易,但也会让性能下降,相比寄存器架构来说,实现同样的功能,栈架构需要的指令条数更多。

JVM的生命周期

启动

JVM的启动是通过引导类加载器(Bootstrap Class Loader)创建一个初始类(Initial Class)来完成的。该类由虚拟机的具体实现指定。

运行

一个运行中的JVM的任务是:执行Java程序。因此程序开始执行时,JVM才运行,程序执行结束,JVM也运行结束。换句话说,执行一个所谓的Java程序时,本质执行的是一个JVM进程。

退出

退出需要分情况讨论:

  • 程序正常执行结束
  • 程序在执行过程中遇到了异常或错误而导致非正常终止
  • 由于OS出现错误而导致JVM进程终止
  • 某线程调用Runtime类或System类的exit()方法,或Runtime类的halt()方法,且Java安全管理器也允许这次操作
  • JNI(Java Native Interface)规范描述了用JNI Inovocation API来加载或卸载JVM时,Java虚拟机的退出情况
posted @ 2021-04-07 17:00  Standing-Stone  阅读(140)  评论(0)    收藏  举报