JVM-01-组成及功能

1. 介绍

JVM(Java Virtual Machine,Java虚拟机 ),能够将Java源文件解释并运行。由于计算机只认识机器码,JVM需要将Java字节码转化为计算机能识别的机器码来运行。

这里可以引出JVM的第一个功能:解释和运行。

此外,JVM还有其他功能:

  • 内存管理:
    • 自动为方法、对象等分配内存。
    • 自动垃圾回收机制,回收不再使用的对象。(相对于C/C++的优势)
  • 即时编译(Just-In-Time,JIT):对热点代码进行优化,提升执行效率。(提升Java程序性能最核心的手段

这里展开解释下即时编译:Java语言借助JVM将字节码指令实时解释为机器码来运行在计算机上。

在这里插入图片描述
而C/C++在编译过程中可以直接将源代码转化为机器码,相对于Java节省了解释的过程。

虽然Java多了一步编译成字节码的过程,但也因此实现了跨平台的特性。因为Windows和Linux系统会安装不同的JVM,通过解释为当前平台机器码,来交给不同的操作系统来运行。
在这里插入图片描述
因此,Java支持跨平台,性能稍微差一些。与之相对的,C/C++追求性能,但不具备跨平台的特性。

此外,即时编译还体现在:对于一些热点代码(再很短时间内多次调用),JVM会认为该部分代码有必要优化,会将编译后的该部分机器码存放在内存中,下次使用时直接在内存中调用(省略了解释过程,提高了性能)。
在这里插入图片描述
这样,Java就能在特定场景下超越C/C++性能。

2. 常见的JVM

通过控制台输入java -version可以查看安装的jvm类型。
在这里插入图片描述
常见的JVM有以下5类,应用最广的是HotSpot虚拟机。其中第二种相对于第一种,可以支持修改源代码。
在这里插入图片描述

HotSpot的发展历程如下:

在这里插入图片描述

3. JVM组成

字节码文件中的类和接口,被加载到内存后,虚拟机使用执行引擎执行代码(将字节码解释成机器码,同时使用即时编译优化性能)。执行引擎会负责本地接口的调用。

  • 类加载器(ClassLoader):将字节码文件加载到内存中,使得后续使用更高效。存放字节码文件中的类、接口
  • 运行时数据区域(JVM管理的内存):JVM管理的内存,为创建对象的内存负责。
  • 执行引擎(即时编译器、解释器、垃圾回收器):执行字节码文件中的指令。
  • 本地接口:调用一些底层由C/C++编写的接口,比如线程的sleep()方法中用到的native修饰的方法,是由C/C++编写的。
    在这里插入图片描述

4. 总结

  1. JVM就是Java虚拟机,是运行在计算机上的程序,能够将Java字节码转化为计算机能识别的机器码。
  2. JVM的功能包括:解释和运行、内存管理、即时编译。
  3. JVM的组成:类加载器、运行时数据区域、执行引擎、本地接口。

以上为个人学习分享,如有问题,欢迎指正:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值