JVM基础知识

92 阅读2分钟

虚拟的计算机,分为系统虚拟机(VMWare),程序虚拟机(Java虚拟机)。

现在使用的虚拟机基本都是hotspot

jvm

Java虚拟机,运行Java字节码,但是随着发展,现在的jvm也可以运行其他的语言编译成的字节码(只要符合jvm规范就行)

特点:

  1. 一次编译,多次运行
  2. 自动的内存管理
  3. 自动的垃圾回收

jvm位置

第01章_JVM所处位置.jpg

jvm整体结构

第02章_JVM架构-简图.jpg

class files:编译过后的字节码文件

类加载子系统:将文件加载到数据区,生成大的class文件

运行时数据区:保存运行时数据的,其中方法区和堆是线程共享的,程序计数器,本地方法栈,虚拟机栈是线程独有的。

执行引擎:将高级语言翻译为机器语言的执行者,以供机器识别

Java架构模型

1.基于栈的指令集架构(jvm使用)

  1. 不需要硬件支持,支持跨平台
  2. 设计实践简单
  3. 使用零地址指令分配,避开了寄存器分配地址的难题。
  4. 因为使用的是栈,只需对栈顶元素操作,所以不需要地址。并且指令集更小,编译器容易实现。

2.基于寄存器的指令集架构(如PC,安卓)

  1. 指令集架构完全依赖硬件,可移植性差。
  2. 花费更少的指令去执行,性能优秀

JVM生命周期

过程描述
虚拟机启动所有的类都继承object,在这一步使用引导类加载器,把这个类加载到虚拟机中
虚拟机执行执行Java程序
虚拟机退出程序结束,代码或者系统产生错误或异常,在程序中手动退出

几大商用虚拟机

hotspot

jrocket

hotspot.png

j9

jrocket.png

Graal 虚拟机

j9.png