JVM虚拟机概念

JVM虚拟机概念

  • 前言
  • jvm虚拟机
  • 总结

前言

其实我一直以来都对jvm虚拟机会比较有点迷,处于大概有一点概念但是有不清楚到底是什么,所以呢,就找了点资料来学习,这篇博客就大概讲讲JVM虚拟机!

jvm虚拟机

JVM虚拟机怎么来的
我们学习Java的应该都知道一句话,Java是面向对象的语言,而且它是跨平台的,这个跨平台嗯是什么意思呢?

答:我们的计算机只认识0和1,我们不管用什么编码语言都需要通过编译器将我们所说的代码转换成计算机认识的0或者1组成的机器语言,程序才能执行。直到现在我们还是这样子,我们的程序是运行在计算机上,计算机是有操作系统的,面对不同的厂家不同操作系统我们都需要根据具体的需求 进行编译,这样子做了太多的重复性工作。所以‘与平台无关性’这一理想就出现了,在这种理想下虚拟机也就应运而生。

(悄悄话:也就是说Java是在虚拟机上运行)

也就达成了Java能够在不同的环境(主要是操作系统)下运行。它首先将源代码编译成二进制字节码,然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性

JVM虚拟机概念_第1张图片

再来举个小栗子,我们一般新建项目都是新建一个Class,然后在里面写Java代码:
JVM虚拟机概念_第2张图片
写一个输出语句:
JVM虚拟机概念_第3张图片
输出结果:
在这里插入图片描述
我们知道执行的命令这是java是一个包装好的命令,这个命令执行了就是启动一个jvm虚拟机。然而启动虚拟机是不够的。

因为jvm不知道我该运行什么。所以要有一个系统来把本地的.class里面的2进制文件加载进虚拟机中。

把文件加载进来我需要开辟一个地方来存放这些东西吧。

把东西存放了呢?jvm需要知道 你到底让我干什么啊。这时候就需要解析文件,既然虚拟机可以使用了,那么按照程序所写的执行完了。

东西岂不是还存在‘一个地方‘中,那么长久下来机器还不撑爆了,所以需要定时吧不用的都删除,以保证内存。

通俗来讲这就是虚拟机做的事情。

加载进虚拟机——类加载器子系统
一个地方——运行时数据区域(堆 栈)
解析文件——执行引擎子系统
定时删除——垃圾收集子系统

以上就是jvm的基本东西,他们算在一起才叫jvm。

这里有一个鲜活的比喻:
大家都经常吃饭。下面我描述下吃饭的过程。
吃饭的时候,饭不会自己跑到嘴里,
所以 ‘类加载器子系统’负责吧饭送到你的嘴中,
经过咀嚼 饭到了胃里,也就是‘运行时数据区域(堆 栈)’中存着,
经过肠胃 也就是‘ 执行引擎子系统’的消化,
我们吸收营养来做日常的开销,消化完了产生了废物,
这时候也就是‘垃圾收集子系统’排出体外。
jvm就是不断的重复这些过程来执行程序,从而保证程序的正常运行。

总结

个人感觉jvm还是能搞懂就搞懂吧,之前我一直只有一个大概的糊糊的概念,经过百度啊啥的搞懂了也挺好的,更容易便于理解以后的学习之路。

你可能感兴趣的:(java,jvm,编程语言)