JVM篇(学习预热 - JVM正式展开 - (实战课程学习总结 - 开课吧))(持续更新迭代)

ops/2024/10/15 18:21:51/

目录

感觉也看了这么多,说一些乱七八糟的内容,完全没有实质的收获,那么现在让我们正式来预热下JVM 吧?

一、程序的执行方式

二、为什么使用 JVM

三、字节码和机器码的区别

四、JDK、JRE与JVM的关系

五、OracleJDK和OpenJDK

1. 查看JDK的版本

2. OpenJDK 的来历

3. Oracle JDK的来历

4. Oracle JDK与OpenJDK的区别

六、JVM和Hotspot的关系

1. JVM和Java的关系

2. JVM的运行模式


感觉也看了这么多,说一些乱七八糟的内容,完全没有实质的收获,那么现在让我们正式来预热下JVM 吧?

一、程序的执行方式

主要有三种:静态编译执行、动态编译执行和动态解释执行。

注意:此处所说的编译指的是编译成可让操作系统直接执行的机器码。

二、为什么使用 JVM

三、字节码和机器码的区别

机器码是电脑CPU直接读取运行的机器指令,运行速度最快,但是非常晦涩难懂,也比较难编写,一般 从业人员

接触不到。

字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。

四、JDK、JRE与JVM的关系

五、OracleJDK和OpenJDK

1. 查看JDK的版本

java -version

(1) 如果是SUN/OracleJDK, 显示信息为:

[root@localhost ~]# java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

说明:

Java HotSpot(TM) 64-Bit Server VM 表明, 此JDK的JVM是Oracle的64位HotSpot虚拟 机, 运行在Server

模式下(虚拟机有Server和Client两种运行模式).

Java(TM) SE Runtime Environment (build 1.8.0_162-b12) 是Java运行时环境(即JRE)的 版本信息.

(2) 如果OpenJDK, 显示信息为:

[root@localhost ~]# java -version
openjdk version "1.8.0_144"
OpenJDK Runtime Environment (build 1.8.0_144-b01)
OpenJDK 64-Bit Server VM (build 25.144-b01, mixed mode)

2. OpenJDK 的来历

Java由SUN公司(Sun Microsystems, 发起于美国斯坦福大学, SUN是Stanford University Network的

缩写)发明, 2006年SUN公司将Java开源, 此时的JDK即为OpenJDK.

也就是说, OpenJDK 是Java SE的开源实现, 它由SUN和Java社区提供支持, 2009年Oracle收购了 Sun公

司, 自此 Java 的维护方之一的 SUN 也变成了 Oracle .

大多数 JDK 都是在 OpenJDK 的基础上编写实现的, 比如IBM J9, Azul Zulu, Azul Zing和Oracle JDK.

几乎现有的所有JDK都派生自OpenJDK, 它们之间不同的是许可证:

OpenJDK根据许可证GPL v2发布;

Oracle JDK根据Oracle二进制代码许可协议获得许可。

3. Oracle JDK的来历

Oracle JDK之前被称为SUN JDK, 这是在2009年Oracle收购SUN公司之前, 收购后被命名为Oracle JDK。

实际上, Oracle JDK是基于OpenJDK源代码构建的, 因此Oracle JDK和OpenJDK之间没有重大的技 术差异。

Oracle的项目发布经理Joe Darcy在OSCON 2011 上对两者关系的介绍也证实了OpenJDK 7和Oracle JDK 7在

程序上是非常接近的, 两者共用了大量相同的代码(如下图)

注意:图中提示了两者共同代码的占比要远高于图形上看到的比例, 所以我们编译的OpenJDK基 本上可以认为

性能、功能和执行逻辑上都和官方的Oracle JDK是一致的.

4. Oracle JDK与OpenJDK的区别

OpenJDK使用的是开源免费的FreeType, 可以按照GPL v2许可证使用.GPL V2允许在商业上使 用;

Oracle JDK则采用JRL(Java Research License,Java研究授权协议) 放出.JRL只允许个人研 究使用,要获得

Oracle JDK的商业许可证, 需要联系Oracle的销售人员进行购买。

六、JVM和Hotspot的关系

JVM是《JVM虚拟机规范》中提出来的规范。

Hotspot是使用JVM规范的商用产品,除此之外还有Oracle JRockit、IBM的J9也是JVM产品

JRockit是Oracle的JVM, 从Java SE 7开始, HotSpot和JRockit合并为一个JVM。

1. JVM和Java的关系

2. JVM的运行模式

JVM有两种运行模式:Server模式与Client模式。

两种模式的区别在于:

  • Client模式启动速度较快,Server模式启动较慢;
  • 但是启动进入稳定期长期运行之后Server模式的程序运行速度比Client要快很多。
  • 因为Server模式启动的JVM采用的是重量级的虚拟机,对程序采用了更多的优化;而Client模式 启动的JVM采用的是轻量级的虚拟机。所以Server启动慢,但稳定后速度比Client远远要快。

http://www.ppmy.cn/ops/126052.html

相关文章

《上海理工大学学报》

《上海理工大学学报》是由上海理工大学主办的自然科学综合性学术期刊,主要报道光电信息与计算机科学、能源与动力工程、系统科学与复杂性科学、机械与材料科学、生物医学等学科的学术研究和科研实践成果。 一、来稿要求 1. 作者投稿时请下载论文著作权协议&#xf…

羲和数据集清洗器003

项目说明 项目名称 羲和数据集清洗器003 项目描述 这是一个基于 Python 的图形用户界面 (GUI) 应用程序,用于检查和修复 .jsonl 文件中的数据格式错误。该工具可以自动修复常见的 JSON 格式错误,并将数据转换为规定的格式。它还提供日志记录功能,记录检查过程中发现的错误信…

EF Core 中避免 SQL 注入的三种写法

SQL 注入攻击可能会对我们的应用程序产生严重影响,导致敏感数据泄露、未经授权的访问和应用程序受损。EF Core 提供了三种内置机制来防止 SQL 注入攻击。 1、利用 LINQ 查询语法和参数化查询,这是比较推荐的做法。 await using var context new Postg…

生产及质量BI应用场景方案(可编辑37页PPT)

荐言分享:随着全球化的深入发展,制造业面临的竞争日益激烈。为了在市场中脱颖而出,企业需要不断提升自身的生产效率、降低成本,同时保证产品质量。现代消费者的需求日益多样化,对产品的个性化、定制化和品质要求越来越…

抖音小游戏画图位置移动

文章目录 画图移动图形位置 画图 const canvas tt.createCanvas(); const context canvas.getContext(2d);context.width 500; context.height 500;let isPressing false; // 是否按下 let startX 0; let startY 0;context.fillStyle "#f00"; context.fillR…

基于YOLOv11的车辆行人实时检测系统(python+pyside6界面+系统源码+可训练的数据集+也完成的训练模型)

上百种【基于YOLOv8/v10/v11的目标检测系统】目录(pythonpyside6界面系统源码可训练的数据集也完成的训练模型)-CSDN博客 ............................................................................................ 摘要: 本文提出了…

golang接口详解

interface(接口) 接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节 在Go语言中接口(interface)是一种类型,一种抽象的类型。相较于之前章节中讲到的那…

软件测试工程师面试整理 —— 操作系统与网络基础!

在软件测试中,了解操作系统和网络基础知识对于有效地进行测试工作至关重要。无论是在配置测试环境、调试网络问题,还是在进行性能测试和安全测试时,这些知识都是不可或缺的。 1. 操作系统基础 操作系统(Operating System, OS&am…