跟着我来对Java虚拟机快速认识下吧!


java虚拟机(Java Virtual Machine 简称JVM)是一个可以执行java字节码的(.class)进程。作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的。但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了。在本文中,我会写下我对虚拟机的理解。因为能力所限,可能有些地方描述的不够欠当。如果你有不同的理解,欢迎下方评论区交流或者私聊我哦~

当启动一个Java程序时,就会运行一个Java虚拟机,每个Java程序都会对应一个Java虚拟机,运行中的Java虚拟机,也可以称为Java虚拟机的一个实例。Java程序运行结束关闭后,运行这个程序的Java虚拟机也会关闭。例如,如果在电脑运行了三个Java程序,就会有三个Java虚拟机在运行。


每个Java程序的主类都会有一个main()方法,虚拟机启动Java程序时,它会调用主类的main()方法作为Java程序的入口,这个main()方法的访问权限必须是public,并且是无返回值的静态方法,方法的参数是一个String类型的数组。

下面是HelloWorld程序代码:


HelloWorld程序只有一个HelloWorld类,HelloWorld类内部必须有一个main()方法,当HelloWorld程序运行时,虚拟机会调用HelloWorld类main()方法作为HelloWorld程序的入口。

在Windows命令行窗口运行HelloWorld程序的命令如下:

java HelloWorld

其中“java”就是虚拟机程序名称,Windows会启动一个虚拟机实例,“java”后面的“HelloWorld”是包含main()方法已编译的class文件名称,虚拟机启动后,会加载HelloWorld.class文件到内存,并调用HelloWorld.class文件内的main()方法,HelloWorld程序进入运行状态,main()方法内部的语句会得到执行,当main()方法内部的所有语句都执行完成后,main方法返回,HelloWorld程序结束,运行这个HelloWorld程序的虚拟机实例也会退出。


虚拟机的体系结构

虚拟机由类加载器、运行数据区、执行引擎、本地方法接口、本地方法库组成。虚拟机体系结构如下图所示:


想要架构师资料的私聊我哦

当虚拟机运行一个程序时,它会使用类加载器加载Java程序的类文件,并且在计算机内申请一块内存区域,作为运行数据区。用来存储程序的类文件、创建的静态对象和实例对象、方法、局部变量、中间结果、方法的返回值等内容。为了管理和有效地利用已申请的内存区域,虚拟机把内存划分为堆、栈、方法区、程序计数器、本地方法栈。

运行数据区的方法区存储了包含程序使用import语句导入的JDK类库在内的类信息、各种常量、静态变量、代码编译后的字节码等内容;本地方法栈用来存储调用非java代码编写的方法(Native Method)使用到的数据,这些方法包括用其它语言编写的第三方库和操作系统自身提供的API;堆用来存储程序中动态创建的类实例对象;栈用来存储程序调用方法过程中,使用到的参数、局部变量、中间结果、返回值等内容;程序计数器用来存储当前程序执行的指令(指令可以理解为类中的可执行代码)。

执行引擎负责执行方法区中的字节码,在执行字节码的过程中会在堆中创建实例对象,在栈中存取当前方法调用的参数、局部变量、中间结果、返回值等,也会通过本地方法接口调用第三方库方法和操作系统自身提供的API。

好了,以上就是我对Java虚拟机的一个简单认知,希望能给你带来一定帮助!

有问题可以评论区下方讨论或者私聊我哦~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第01章 JAVA简介第02章 基础语法第02章 递归补充第03章 面向对象第04章 异常处理第05章 数组第06...
    顺毛阅读 566评论 0 1
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,822评论 0 11
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 5,236评论 1 114
  • 五、Java 虚拟机 一、什么是Java虚拟机Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现...
    壹点零阅读 822评论 0 0
  • 《深入理解Java虚拟机》笔记_第一遍 先取看完这本书(JVM)后必须掌握的部分。 第一部分 走近 Java 从传...
    xiaogmail阅读 5,482评论 1 34

友情链接更多精彩内容