JVM和JAVA体系结构

2021-09-19  本文已影响0人  Qiansion齐木楠雄

1、JVM前言

作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题?

image.png

计算机系统体系对我们来说越来越远,在不了解底层实现方式的前提下,通过高级语言很容易编写程序代码。但事实上计算机并不认识高级语言,高级语言也是被编译成机器指令传入cpu进行操作的


image

2、JAVA VS C++

3、JAVA的跨平台性

4、字节码

5、多语言混合编程

6、JVM(虚拟机)的介绍

6.1 虚拟机的介绍

6.2 java虚拟机

特点

7 JVM的位置

image.png

JVM是运行在系统之上的,它与硬件没有直接的交互

java的体系结构

image.png

JDK = JRE + JVM
java文件通过前端编译器javac编译成字节码(.class)文件,再通过java HotSpot解释运行

8 JVM的整体结构

作用

9 JAVA代码执行流程

image.png

10 JVM的架构模型

Java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构。具体来说:这两种架构之间的区别:

10.1两种架构的举例

public class Test {
    public static void main(String[] args) {
        int a = 2;
        int b = 3;
        int c = a+b;
    }
}

执行2+3这种逻辑操作,其指令分别如下:

mov eax,2;
add eax,3;

总结:
由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令

时至今日,尽管嵌入式平台已经不是Java程序的主流运行平台了(准确来说应该是HotSpot VM的宿主环境已经不局限于嵌入式平台了),那么为什么不将架构更换为基于寄存器的架构呢?

因为基于栈的架构跨平台性好、指令集小,虽然相对于基于寄存器的架构来说,基于栈的架构编译得到的指令更多,执行性能也不如基于寄存器的架构好,但考虑到其跨平台性与移植性,我们还是选用栈的架构

11 JVM生命周期

上一篇 下一篇

猜你喜欢

热点阅读