了解JVM吗,一文让你看不懂什么是JVM(嘻嘻)

84 阅读2分钟

1.写在前面

··本文主要讲述关于java虚拟机JVM的整体架构,不过多阐述内部细节。其它细节问题会单另成篇发布。 ·· 我们日常使用的java,C++等语言其实就是 高级程序语言,以java来说,一个.class文件经过编译成为字节码文件之后,交给JVM来处理和适配。不同的操作系统适配不同的虚拟机环境。之后成为机器能够识别的语言转达给CPU进行执行。

image.png

1.什么是java虚拟机

它是用来执行java字节码的虚拟计算机,拥有独立的运算机制。java语言也附带了JVM所带来的 跨平台性以及优秀的垃圾回收机制。 说的再通俗一点,他就是那些字节码(二进制)的运行环境,然后解释为对应操作系统可以识别的机器指令执行。

2.java现在使用哪个VM

目前java使用的是市面上性能最高的代表作之一, HotSpot VM。 它基于 栈式架构,设计实现比较简单,避开了寄存器架构的分配难题,执行过程依赖栈帧。具以一下特点

  1. 指令集更小,编译器更容易实现;
  2. 可移植性更好;
  3. 无需硬件支持;
  4. 更好的实现跨平台性;

3.JVM由哪几部分构成

经过java编译器编译后生成的java字节码文件进入 JVM。其内部构成主要分为5部分。

  1. 方法区
  2. PC寄存器(程序计数器)
  3. 虚拟机栈
  4. 本地方法区栈 (后续会发布关于这五个区域的详细解释。)

4.JVM的生命周期

虚拟机再如下几种情况会退出:

  1. 程序正常执行完成;
  2. 程序再执行过程中出现异常或错误;
  3. 操作系统出现错误;
  4. 线程调用了 Runtime类或System类的一些方法主动退出等;