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

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

目录

      • 类加载器
      • 内存管理器(垃圾回收器)
      • 执行引擎

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

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

在上面虚拟机的概念中提到了虚拟机是通过软件模拟的,既然虚拟机本质也是一个软件,那么这个进程在OS看起来和其他进程比无差别,所以我们可以大概想到这样一个模型来明白jvm属于什么层面:
什么是JVM?JVM概述——初识JVM(类加载器,垃圾回收器,执行引擎)_第1张图片
对jvm有了大的了解之后我们再来谈一谈jvm的具体作用。
可以先看一下上一篇文章对编译和运行有个大概的了解:

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

类加载器

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

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

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

执行引擎

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


以上就把jvm内部的三个大的部件做了一个简单的介绍,下面放上jvm的图方便大家有一个更深的理解
什么是JVM?JVM概述——初识JVM(类加载器,垃圾回收器,执行引擎)_第3张图片
补充一下上图的本地方法是什么

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

你可能感兴趣的:(JVM,jvm,java)