jvm是什么_什么是JVM?Java虚拟机简介

Java虚拟机是旨在执行其他程序的程序。这是一个简单的想法,也是我们对功夫进行编码的最大范例之一。JVM破坏了其现状,并在今天继续支持编程创新。

JVM的用途

JVM具有两个主要功能:允许Java程序在任何设备或操作系统上运行(称为“一次编写,随处运行”原则),以及管理和优化程序内存。1995年发布Java时,所有计算机程序均写入特定的操作系统,并且程序存储器由软件开发人员管理。因此,JVM是一个启示。

22003eefce30a238d7878fb1b4d3d31b.png

对JVM进行技术定义很有用,并且软件开发人员每天都会考虑它。让我们分解一下:

  • 技术定义:JVM是执行代码并为该代码提供运行时环境的软件程序的规范。
  • 日常定义:JVM是我们运行Java程序的方式。我们配置JVM的设置,然后在执行期间依靠它来管理程序资源。

当开发人员谈论JVM时,我们通常是指在机器上运行的进程,尤其是在服务器上运行的进程,它代表并控制Java应用程序的资源使用情况。将此与JVM规范进行对比,后者描述了构建执行这些任务的程序的要求。

谁开发和维护JVM?

JVM 由一些非常聪明的公司和开源程序员广泛部署,大量使用和维护。该OpenJDK的项目是Sun Microsystems的决定开源Java的后代。在Oracle的Java指导下,OpenJDK一直在继续,如今,Oracle工程师完成了许多繁重的工作。

JVM中的内存管理

与正在运行的JVM的最常见交互是检查堆和堆栈中的内存使用情况。最常见的调整是调整JVM的内存设置。

垃圾收集

在Java之前,所有程序存储器都由程序员管理。在Java中,程序内存由JVM管理。JVM通过称为垃圾收集的过程来管理内存,该过程不断识别并消除Java程序中未使用的内存。垃圾收集发生在正在运行的JVM中。

在早期,Java受到了很多批评,因为它不像C ++那样“贴近金属”,因此不如C ++快。垃圾收集过程特别有争议。从那时起,已经提出了各种算法和方法并将其用于垃圾收集。通过持续的开发和优化,垃圾回收有了很大的改善。

“close to the metal”是什么意思?

当程序员说一种编程语言或平台“close to the metal”时,我们的意思是开发人员能够以编程方式(通过编写代码)管理操作系统的内存。从理论上讲,程序员可以通过规定使用了多少以及何时丢弃它来使我们的程序发挥更多的性能。在大多数情况下,将内存管理委派给像JVM这样的高度精炼的流程可以产生比您自己做的更好的性能和更少的错误。

JVM分为三部分

可以说JVM有三个方面:规范,实现和实例。让我们考虑其中的每一个。

1. JVM规范

首先,JVM是一种软件规范。在一定程度上循环方式,JVM规范亮点,它的实施细节不规范中定义,以允许其实现最大的创意:

“要正确实现Java虚拟机,您只需读取class文件格式并正确执行其中指定的操作即可。”

巴赫(JS Bach)曾经描述过类似的音乐创作:

“您要做的就是在正确的时间触摸正确的键。”

因此,JVM所有要做的就是正确运行Java程序。听起来很简单,甚至从外面看起来也很简单,但这是一项艰巨的任务,特别是考虑到Java语言的强大功能和灵活性。

JVM作为虚拟机

JVM是一种虚拟机,它以可移植的方式运行Java类文件。成为虚拟机意味着JVM是对基础的实际计算机(例如程序在其上运行的服务器)的抽象。不管实际上存在什么操作系统或硬件,JVM都会为要在其中运行的程序创建可预测的环境。但是,与真正的虚拟机不同,JVM不会创建虚拟操作系统。将JVM描述为托管运行时环境或进程虚拟机会更加准确。

2. JVM实现

实现JVM规范会产生一个实际的软件程序,它是一个JVM实现。实际上,有许多JVM实现,包括开源的和专有的。OpenJDK的HotSpot JVM是参考实现,并且仍然是世界上经过最彻底测试和测试的代码库之一。HotSpot也是最常用的JVM。

几乎所有许可的JVM都是作为OpenJDK和HotSpot JVM的分支创建的,包括Oracle的许可的JDK。开发人员通常是出于对OpenJDK创建许可分支的渴望,他们希望添加特定于操作系统的性能改进。通常,您将Java 虚拟机作为Java Runtime Environment(JRE)的捆绑部分下载并安装。

3. JVM实例

在实现JVM规范并将其作为软件产品发布后,您可以将其下载并作为程序运行。该下载的程序是JVM的实例(或实例化版本)。

大多数时候,当开发人员谈论“ JVM”时,我们指的是在软件开发或生产环境中运行的JVM实例。您可能会说:“嗨,阿南德,该服务器上的JVM使用多少内存?” 或者,“我不敢相信我创建了一个循环调用,并且堆栈溢出错误使我的JVM崩溃了。这是一个新手错误!”

什么是软件规格?

甲软件规范(或规格)是人类可读的设计文件,它描述一个软件系统应如何操作。规范的目的是为工程师编写明确的描述和要求。

在JVM中加载和执行类文件

我们已经讨论了JVM在运行Java应用程序中的作用,但是它如何执行其功能?为了运行Java应用程序,JVM依赖于Java类加载器和Java执行引擎。

JVM中的Java类加载器

Java中的所有内容都是一个类,并且所有Java应用程序都是从类构建的。一个应用程序可以包含一个或数千个类。为了运行Java应用程序,JVM必须将已编译的.class文件加载到可以访问它们的上下文中,例如服务器。JVM依靠其类加载器来执行此功能。

该Java类加载器是JVM的一部分加载类到内存中,使它们可用于执行。类加载器使用诸如延迟加载和缓存之类的技术来使类加载尽可能高效。就是说,类加载不是(例如)便携式运行时内存管理所具有的史诗般的脑筋急转弯,因此技术相对简单。

每个Java虚拟机都包含一个类加载器。JVM规范描述了用于在运行时查询和操作类加载器的标准方法,但是JVM实现负责实现这些功能。从开发人员的角度来看,底层的类加载器机制通常是一个黑匣子。

JVM中的执行引擎

一旦类加载器完成了加载类的工作,JVM就开始在每个类中执行代码。该执行引擎是JVM组件,用于处理此功能。执行引擎对于正在运行的JVM是必不可少的。实际上,出于所有实际目的,它是JVM实例。

执行代码涉及管理对系统资源的访问。JVM执行引擎位于正在运行的程序(对文件,网络和内存资源的需求)与提供这些资源的操作系统之间。

执行引擎如何管理系统资源

系统资源可以分为两大类:内存和其他所有内容。

回想一下,JVM负责处理未使用的内存,垃圾回收是进行处理的机制。JVM还负责分配和维护开发人员理所当然的引用结构。例如,JVM的执行引擎负责采用newJava中的关键字之类的内容,并将其转换为特定于OS的内存分配请求。

除了内存之外,执行引擎还管理用于文件系统访问和网络I / O的资源。由于JVM可跨操作系统互操作,因此这绝非易事。除了每个应用程序的资源需求之外,执行引擎还必须响应每个OS环境。这就是JVM能够处理狂野需求的方式。

JVM的演变:过去,现在,未来

在1995年,JVM引入了两个革命性的概念,它们成为现代软件开发的标准功能:“一次编写,随处运行”和自动内存管理。当时,软件互操作性是一个大胆的概念,但是如今很少有开发人员会对此三思而后行。同样,虽然我们的工程先行者必须自己管理程序存储器,但我这一代人还是随垃圾收集一起成长的。

可以说James Gosling和Brendan Eich发明了现代编程,但是在接下来的几十年中,成千上万的人已经完善并建立了自己的思想。Java虚拟机最初仅用于Java,而如今已发展为支持许多脚本和编程语言,包括Scala,Groovy和Kotlin。展望未来,很难看到JVM不在开发领域中占主导地位的未来。

链接:什么是JVM?Java虚拟机简介
出处:头条
作者:A白话经济学
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值