JVM性能优化之初识JVM

JVM性能优化之初识JVM


一、什么是JVM

1.JVM简介

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

我们知道JAVA程序是跨平台的,可以一次编译到处运行,编译完成之后不管是windows、Linux还是Mac都可以直接运行,JVM就在这里起到了重要的作用。看下面这张图,这是C代码运行的情况,不同的平台需要执行不同的编译然后才能运行:
在这里插入图片描述
下面是Java代码的执行情况,Java的代码编译完成之后是.class文件,class文件是不区分平台的,真正让代码适配不通平台的是JVM虚拟机,还记得安装虚拟机的时候需要安装不通平台的安装包了吧,JVM负责将class文件解析为自己平台的二进制去执行,这样Java就可以跨平台了:
在这里插入图片描述

2.JDK、JRE和JVM的关系

我们常常听到JDK和JRE,现在又加了个JVM,它们3者之间又什么关系或者联系呢?

  • JDK:JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JRE)和JAVA工具。
  • JRE:JRE可以让计算机系统运行Java应用程序,JRE的内部有一个Java虚拟机(JVM)以及一些标准的类别函数库(Class Library)。
  • JVM:JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

根据介绍可以知道(JDK官方文档有详细的图说明),JDK是JAVA的运行环境(JRE) + 一些JAVA工具;而JRE是JAVA虚拟机(JVM) + 一些标准库。所以它们之间的关系我们可以用下面的韦恩图来表示:

在这里插入图片描述

二、JVM的组成

JVM是由类加载器(ClassLoader)、运行时数据区(Runtime Data Area)、执行引擎(Execution Engine)、本地库接口(Native Interface)四个部分组成的。

  • 类加载器:负责将对应类的.class文件中的二进制流加载到内存空间。
  • 运行时数据区:用于保存JAVA程序运行过程中需要用到的数据和相关信息,也就是经常说的把数据读到内存,包括类加载之后的信息,从磁盘读取文件信息等。
  • 执行引擎:负责执行虚拟机的字节码,一般会先进行编译成机器码后执行。
  • 本地库接口:为了融合不同的编程语言,提供一个标准的方式让JAVA程序通过虚拟机与原生代码进行交互。

JVM的运行过程如下图所示:
在这里插入图片描述
如图,平常我们写的代码都是.java文件,是不能被JVM识别的,需要将其编译为.class文件。从.class文件开始到看到代码的效果,然后到结束这是一个JVM运行的完整流程。
首先.class字节码文件被类加载子系统加载,将.class文件加载到虚拟机内存中,加载过程经过了校验解析等操作,确定了.class文件没有问题了,把字节码中解析出来的相关的信息放到了运行时数据区中,就没有类加载子系统的事了,后面的运行通过执行引擎和运行时数据区的交互,执行引擎将字节码解析为机器码后硬件就可以识别了,运行代码,中途需要存取数据在运行时数据区进行操作,如果有遇到调用本地方法的则通过本地方法接口将其解析为字节码,直到整个程序运行完成,虚拟机关闭代表着JVM操作结束。

三、三大商用虚拟机

  • HotSport VM:JDK1.3时成为JVM默认的虚拟机直到现在,占有绝对的市场地位。它的起名就是指的热点代码探测技术,优点是可以通过计数器找到最具有编译价值的代码,触发即时编译或栈上替换,以及通过编译器与解析器协同工作的模式,在最优化的程序相应时间与最佳执行性能中取得平衡。我们常说的JVM内存结构包括其它分析一般都是指的HotSport VM。
  • JRockit:JRockit专注于服务器端的应用,其内部不包含解析器的实现,是目前最快的虚拟机。JRockit的优点在于全面的Java运行时解决方案组合,其中JRockit Real Time解决方案提供毫秒甚至微妙级的JVM相应时间适用于军事指挥以及电信网络的需要;其提供的MissionControl服务套件可以以极低的开销来监控、管理和分析生产环境中的应用程序。JRockit于2008年被oracle收购。
  • J9:J9是IBM公司制作的虚拟机,定位于HotSpot相似,适用于服务器端、桌面应用以及嵌入式等多种用途。J9也号称为目前世界上最快的JAVA虚拟机,当然它的最快是在IBM自己的产品上。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值