我所理解的JVM

来源:互联网 发布:股票利润怎么算法 编辑:程序博客网 时间:2024/05/21 18:37

   相信JAVA程序员都听说过JVM,也都知道“一次编译,到处运行”是JAVA语言最大的特性。那究竟什么是JVM?JAVA语言的这个最大特性与JVM是否有关系?带着这两个疑问我们来看本篇文章。

   首先来看百度百科中对JVM的定义:JVM是Java Virtual Machine(Java虚拟机)的缩写,jvm是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。如果对这句话不是很理解,我们可以这样去理解JVM:我们把物理机(平常自己使用的计算机)比作一栋别墅,别墅中需要用到的水电比作物理机中的CPU,别墅中的住户比作物理机的程序,别墅中的整个大空间比作物理机中的内存与磁盘,住户在别墅的大空间中生活需要水和电的支持(程序在物理机内存中的运行需要CPU的支持)。由此我们也可以对JVM作一个比喻了:JVM相当于是别墅中创建的一个私人建筑空间(物理机中虚构出来的计算机),这个私人建筑空间遵守建筑规范(JVM遵守计算设备的规范),需要接入水和电(JVM需要模拟出各种计算机功能,如模拟出CPU),并且私人建筑空间中的水电占用整个别墅的水电资源(JVM中的CPU等资源占用物理机中的资源)。

   对JVM有个大概的概念和印象之后,我们就需要思考这个问题:“一次编译,到处运行”与JVM有什么关系?我们还是以上面的比喻来解释整个问题,很多年轻人在城市里站稳脚跟后会把父母从农村接到城市里的来居住(我们的程序经常是在windows环境中开发,而在linux环境上部署),但是很多父母都不愿意去城市里居住(项目在windows中打包发布到linux环境后经常会出现各种各样的问题),因为他们一辈子都在农村居住,已经习惯了农村的居住环境与生活习惯,突然让他们去城市里会感到非常的不习惯(windows与linux的环境差异也会导致程序的异常)。那针对这个现象有没有一个好办法呢?我们可以把整个家从农村搬到城市的家中(夸大了,为了形象比喻),这样父母就会习惯很多(在所有需要运行JAVA程序的计算机中都模拟出一个一模一样的环境,即JVM,如此我们的程序不管迁移到任何环境都不会有环境不一致的问题,因为模拟出的jvm环境都是一样的,而程序是运行在JVM中的)。

   另外JVM还有一个很大的作用就是JVM会自己管理内存,进行垃圾回收。所以JAVA程序员无需关心垃圾回收,减少了我们很大的一块麻烦。

   JVM的线程与内存模型相关文章后续会陆续的发布,均为本人自己的理解,若不喜欢请勿喷,也希望与各位读者,各位大牛多多交流!

原创粉丝点击