什么是JVM?JVM概述——初识JVM(类加载器,垃圾回收器,执行引擎)

此篇文章属于作者初识之后的概述总结,谈论的层面很浅,大佬勿喷。

JVM全称是Java Virtual Machine,意为java虚拟机,所以要了解什么是JVM我们应该先了解什么是虚拟机。
虚拟机指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整的的计算机系统。

虚拟机模拟为什么要模拟一个计算机系统?因为这样做就可以让java程序员不用太多的关注底层操作系统和计算机组成方面的东西,我们编写出的代码在jvm之上运行,这大大减小了java程序员的负担,可以让我们把更多的精力放在代码层面。

在上面虚拟机的概念中提到了虚拟机是通过软件模拟的,既然虚拟机本质也是一个软件,那么这个进程在OS看起来和其他进程比无差别,所以我们可以大概想到这样一个模型来明白jvm属于什么层面:
在这里插入图片描述
对jvm有了大的了解之后我们再来谈一谈jvm的具体作用。
可以先看一下上一篇文章对编译和运行有个大概的了解:

java源文件(文件名.java),字节码文件(文件名.class),编译和运行

类加载器

Java程序员写好代码要运行的时候编译器会先将*.java源码文件编译成*.class字节码文件(类文件),字节码文件主要包含了“指令”和“指令”要处理的数据。此时字节码文件还是放在硬盘中,大家都知道我们计算机是建立在冯诺依曼体系之上的,所以CPU只能和内存交互,也就是此时程序还没有被加载到内存中可以认为还没有开始运行,此时jvm中有这样一个“部件”——类加载器将硬盘上的字节码文件加载到内存中,到这里我们的代码算是真正开始运行了。
对类加载器做一个总结:jvm中的类加载器的作用就是把字节码文件加载到内存中。

内存管理器(垃圾回收器)

字节码文件被加载到内存中,这里的内存是我们广义上所说的内存,但同时抽象地看,这一块内存是jvm在启动时OS分配的内存,在细化地说,是jvm的另一个“部件”——内存管理器(Memory Manager)MM 或者通常说的垃圾回收器(Garbage Collector)GC 给我们的程序所分配的内存,说到这里就不得不说一下jvm运行时内存分区
在这里插入图片描述
总结一下内存管理器:内存管理器又叫垃圾回收器,一个APP运行时会需要内存的申请和释放,而这时jvm内的这个垃圾回收器会做内存的分配和回收。即jvm运行时内存中实时变化的动态内存都是它管理的。

执行引擎

一个程序最终是在CPU上面运行的,但是在源码被编译为的字节码是不能被CPU所能识别和运行的,此时jvm的一个“部件”——执行引擎(Excute Engine)会把字节码翻译为CPU认识的指令。


以上就把jvm内部的三个大的部件做了一个简单的介绍,下面放上jvm的图方便大家有一个更深的理解
在这里插入图片描述
补充一下上图的本地方法是什么

一. 什么是Native Method
简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有裂痕的石头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值