Java虚拟机(一):JVM体系结构

一、JVM概述

Java虚拟机有自己完善的硬件架构,如处理器、堆栈等,还具有相应的指令系统

Java虚拟机本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。Java语言的可移植性正是建立在Java虚拟机的基础上。任何平台只要装有针对于该平台的Java虚拟机,字节码文件(.class)就可以在该平台上运行。这就是“一次编译,多次运行”

Java虚拟机不仅是一种跨平台的软件,而且是一种新的网络计算平台。该平台包括许多相关的技术,如符合开放接口标准的各种API、优化技术等。Java技术使同一种应用可以运行在不同的平台上。Java平台可分为两部分,即Java虚拟机(Java Virtual Machine)和Java API类库

目前JVM已经支持多语言字节码文件,如Kotlin、Groovy、JRuby、Jython、Scala等

二、JVM在计算机所处的位置

JVM是运行在操作系统之上,没有直接和硬件进行交互

-

三、JVM的不同实现

  • SUN Classic
  • Exact VM:开始具备现代JVM特性
  • HotSpot VM:具备热点代码探测技术,目前在大规模使用的JVM
  • BEA JRockit:(BEA已被Oracle收购)专注于服务端应用,世界最快的JVM之一
  • IBM J9
  • Taobao JVM:目前阿里淘宝、天猫均使用Taobao JVM替换Oracle官方JVM
  • Graal VM: Oracle 2018年4月公开,口号 Run Programs Faster Anywhere.最可能替代HotSpot的产品

四、JVM体系结构

1.Java代码运行流程:Java程序 --> 字节码文件 --> 类装载子系统化身为反射类Class--> 运行时数据区-->执行引擎 --> 操作系统

2.方法区堆区是所有线程共享内存的区域而Java栈本地方法栈程序计数器是运行是线程私有的内存区域

五、JVM采用的架构

由于跨平台的特性,JVM采用基于栈的指令集架构,无需硬件支持,更好实现跨平台特性

与JVM采用架构相对的另一指令集架构:基于寄存器的指令集架构

下图为基于栈与寄存器指令集架构各自特点

-

六、JVM声明周期

1.启动

通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的

2.执行

  • 一个运行中的java虚拟机有着一个清晰的任务:执行Java程序
  • 程序开始执行的时候他才运行,程序结束时他就停止
  • 执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java虚拟机的进程

3.结束

  • 程序正常执行结束
  • 程序异常或错误而异常终止
  • 操作系统错误导致终止
  • 某线程调用Runtime类或System类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次exit或halt操作
  • 除此之外,JNI规范描述了用JNI Invocation API来加载或卸载Java虚拟机时,Java虚拟机的退出情况
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/769274

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。