[java乱弹]--(1)我眼中的虚拟机

版权声明: https://blog.csdn.net/zhaoyaxuan001/article/details/82290231
声明:
Author:赵志乾
Date:2018-9-1
Declaration:All Right Reserved!!!

我们经常说虚拟机在Java世界中尤为重要,其原因在于:虚拟机为java代码提供了运行环境。其实这种说法并不准确,因为在虚拟机的眼中只有字节码的存在(暂时不考虑本地方法调用)。确切的来说,虚拟机为字节码的运行提供了环境。

虽然虚拟机本身服务于字节码,但两者之间其实是相辅相成的。因为字节码指令集需要得到虚拟机的支持,而虚拟机的高效率执行又依赖于字节码指令集的良好设计。于是便诞生出了一整套虚拟机规范,其明确定义了字节码指令集和虚拟机应有的行为。

从拟人化的角度出发,虚拟机可以看做是一个有着高度自律性的仲裁者,其时刻在依据既定流程协调各对象间的协作,并管理着各对象的整个生命周期。在虚拟机中构建对象需要的原材料,便是由我们经常提及的“类”来提供,而各对象间的协作便是由常说的方法调用来描述。

类:为虚拟机构建对象提供了原材料。源于其向虚拟机提供了如下信息:

1、虚拟机需要在堆空间上开辟多大的内存空间,并按照何种规则完成所开辟出内存空间的布局,然后对布局后的内存空间如何进行初始化。这一系列的操作均有虚拟机封装在一条字节码指令的调用中(new)。

2、虚拟机为开辟出的内存空间标注类型,这一类型取决于构建对象时所使用的类。故虚拟机能够在运行时确定某段内存上存放对象的实际类型。

方法调用:为虚拟机提供各对象间的协作方式,也称作是对象间的消息传递。

综上所述:虚拟机是一个有着固定操作流程的系统,为代码的运行提供了一个骨架。作为软件开发人员的我们,需要向虚拟机提供两大类物件:构建对象的原材料(类)和各对象间的协作方式,以便虚拟机能够按照我们的意图协调各对象间的运作。当我们在大脑中想象程序的运行方式时,要时刻谨记有虚拟机这只无形的大手在拨弄着一切。

 

 

猜你喜欢

转载自blog.csdn.net/zhaoyaxuan001/article/details/82290231
今日推荐