首页 > 其他分享 >JVM:初识JVM

JVM:初识JVM

时间:2024-10-26 18:19:26浏览次数:7  
标签:Java 字节 JDK 虚拟机 HotSpot 初识 JVM

目录

一、什么是JVM?

1、JVM的全称

2、JVM的职责

二、JVM的功能

1、解释字节码文件(上面提到了)

2、内存管理

3、即时编译(Just-In-Time,简称JIT)

三、常见的JVM

1、常见的几种JVM

2、HotSpot(Oracle JDK版)的发展历程

总结


一、什么是JVM?

1、JVM的全称

JVM全称是Java Virtual Machine,中文译名为:Java虚拟机。

2、JVM的职责

JVM本质上是一个运行在计算机上的程序,它的职责是运行Java字节码文件。

举例:

等到JVM拿到HelloWorld.class字节码文件时,它的任务是将该字节码文件,解释(翻译)成机器码,这样才能被我们的计算机识别。过程如下:

二、JVM的功能

1、解释字节码文件(上面提到了)

  • JVM对字节码文件中的指令,实时的解释成机器码,才能让计算机执行。

2、内存管理

  • JVM自动为对象、方法分配内存。
  • JVM自动的垃圾回收机制,回收不再使用的对象。

        在C语言中,对象回收需要程序员手动去写代码实现,如果程序员水平有限,那么可能导致不使用的对象永久存在而不会被回收。

3、即时编译(Just-In-Time,简称JIT)

  • 对热点代码(很短时间被多次调用的代码)进行优化,提升执行效率。

        Java语言如果不做任何优化,性能不如C、C++等语言,因为多了一个JVM将字节码文件解释成机器码的过程。

        

       那么JVM团队也意识到了这个问题,于是推出了JVM的即时编译,来优化性能:

        即时编译,就是将短时间内被多次调用的Java代码对应的字节码指令,解释成机器码,然后保存在内存中,等到下次再调用这些代码时,就不用再进行解释了,而是直接从内存中调取刚才存入的机器码。这样一优化,就使得Java语言的性能不逊色于C、C++,甚至是超越。

三、常见的JVM

1、常见的几种JVM

思考:能不能随意地开发一款JVM(Java虚拟机)呢?

答案:不能!需要遵循《Java虚拟机规范》。

下面介绍上图中的几款JVM:

  • HotSpot(Oracle JDK版)(默认在JDK中包含的java虚拟机):

        这款虚拟机使用最广泛,稳定可靠,社区活跃,因此没特殊需求,HotSpot这款JVM使我们的首选。但是HotSpot这款虚拟机缺点是源代码不能提供给我们修改,是闭源的。

  • HotSpot(Open JDK版):

        这款虚拟机是开源的,满足了人们对JVM有二次开发的需求。

  • GraalVM:

        这款虚拟机支持多种编程语言,如:Ruby、Python、C++等。而且适用于微服务、云原生架构。后面会重点学习该虚拟机。

  • Dragonwell JDK:

        这款虚拟机适用于电商、物流、金融领域,即:对性能要求比较高的领域。

  • Eclipse OpenJ9:

        适用于微服务、云原生架构。

2、HotSpot(Oracle JDK版)的发展历程

      HotSpot(Oracle JDK版)这款Java虚拟机,是JDK默认包含的虚拟机。

总结

标签:Java,字节,JDK,虚拟机,HotSpot,初识,JVM
From: https://blog.csdn.net/qq_63981644/article/details/143256729

相关文章

  • 初识算法 · 二分查找(4)
    目录前言:寻找峰值题目解析算法原理算法编写寻找旋转排序数组中的最小值题目解析算法原理算法编写寻找缺失的数字题目解析算法原理算法编写前言:​本文的主题是二分查找,通过三道题目讲解,一道是寻找峰值,一道是搜索旋转排序数组的最小值,一道是0-n-1中缺失的数字......
  • JVM、JDK、JRE的区别是什么
    在探讨Java编程语言及其环境时,我们会经常遇到JVM、JDK、JRE这三个词。每个词都有自己特定的定义和角色。让我们详细了解一下这三者之间的区别。Java虚拟机(JVM)是Java平台的一部分,负责执行Java字节码。Java运行环境(JRE)是运行Java程序所需的环境。Java开发工具包(JDK)是Java的开发环境......
  • 初识调整法(贪心)
    引例:\(证明:圆内接四边形中正方形的面积最大\)$在圆上顺时针任取四点A,B,C,D构成凸四边形,固定对角线AC,分别令B,D在对应的圆弧上自由滑动.$$\becauseS_{四边形ABCD}=\frac{(d_{B-AC}+d_{D-AC})\cdot|AC|}2$$\therefore最大化S_{四边形ABCD}\Rightarrow......
  • 初识MySQL · 表的操作
    前言:上一篇文章我们介绍了库的操作,而在我们学习MySQL的第一篇文章就提及了,使用MySQL的时候,先是创建数据库,然后是创建表,表和数据库的重要关系其实是对等的,所以相关的操作,对于增删查改也是同理。删除方面其实对于数据库来说或者是表来说,都是需要非常谨慎的,因为数据库对于开......
  • 第一章 初识FineReport 产品简介
    学习平台链接视频链接一、快速入门学习界面二、FineReport功能介绍2.1、入门简介2.1.1、用以解决这些问题报表开发的困境手工环节多,报表制作慢,人工误差多,时效性差报表文件越来越多,高冗余、不易用分享繁琐,报表的版本管理难报表体现的结果不直观数据应用的困境数......
  • JVM内存池监控
    1.Committed1.1定义:committed指的是JVM从操作系统那里已经获取并承诺给内存池使用的内存量。这部分内存已经被分配给JVM,并且可以立即用于存储对象或数据。1.2特点:committed内存不一定全部被使用,但它保证了JVM在需要时可以直接使用这些内存而不需要再向操作系统申请。当......
  • JVM - 清单
    JVM内存布局是怎样的Java对象的布局是怎么样的对象分配策略是怎么样,什么是空间分配担保机制GCroots有哪些ThreadLocal内存泄漏的原因GC算法有哪些,垃圾收集器有哪些,各自特点类的生命周期类Class对象被回收的条件有哪些类加载器,什么是双亲委派流程......
  • 原创 | 大模型扫盲系列——初识大模型
    近年来,随着计算机技术和大数据的快速发展,深度学习在各个领域取得了显著的成果。为了提高模型的性能,研究者们不断尝试增加模型的参数数量,从而诞生了大模型这一概念。本文将从大模型的原理、训练过程、prompt和相关应用介绍等方面进行分析,帮助读者初步了解大模型。大模型的定......
  • [初识C语言]初识十进制、八进制以及十六进制之间的转换
     序言:本文面对的对象是C语言的初学者,我将会以最简单的方式来让大家快速了解十进制、八进制以及十六进制之间的转换。十进制的转换:十进制转换为八进制:首先我们学习:%o是printf函数中用于输出一个整数的八进制表示的格式说明符下面以十进制的整数10转换为八进制的整......
  • 初识Maven2.2-maven的第一个项目
    简介:不通过idea编程工具。而是手动通过创建文件夹目录,来创建Maven的第一个项目用cmd命令窗口来进行clean、compile、test、install等操作前提:配置Maven的环境变量注意:下载Maven时,最好是下载到D盘的根目录下。路径越简单越好。不要带中文!跟配置jdk一样。要写一......