当前位置: 首页 > news >正文

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

目录

感觉也看了这么多,说一些乱七八糟的内容,完全没有实质的收获,那么现在让我们正式来预热下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.lryc.cn/news/462972.html

相关文章:

  • WebGL编程指南 - 入门续
  • EPS导出DWG存在地物缺失或者没有编码属性的情况
  • 跨境业务收款难?Zoho Books来帮忙
  • 深入解析 Harris 角点检测算法:从孔径问题到响应函数的完整推导
  • 抖音视频制作怎么暂停画面,抖音视频怎么让它有暂停的效果
  • Android GPIO方式解码红外数据
  • 基于SpringBoot+Vue的益农智慧服务平台【提供源码+答辩PPT+参考文档+项目部署】
  • 基于springboot的在线考试与学习交流网页
  • JS异步编程进阶(二):rxjs与Vue、React、Angular框架集成及跨框架状态管理实现原理
  • nginx web代理
  • 人形机器人的关节控制
  • python 爬虫 入门 二、数据解析(正则、bs4、xpath)
  • PTX 汇编代码语法
  • 【mysql】统计两个相邻任务/事件的间隔时间以及每个任务的平均用时
  • RHCE——笔记
  • Spring Boot在知识管理中的应用
  • OpenCV高级图形用户界面(14)交互式地选择一个或多个感兴趣区域函数selectROIs()的使用
  • 字节青训营入营考核部分题解
  • Android调用系统打印图片
  • 网络最快的速度光速,因此‘‘光网络‘‘由此产生
  • WPF -- LiveCharts的使用和源码
  • spring 如何将mutipartFile转存到本地磁盘
  • 【学术会议-6】激发灵感-计算机科学与技术学术会议邀您参与,共享学术盛宴,塑造明天的科技梦想!
  • 模电基础(晶体管放大电路)
  • Python3 接口自动化测试,HTTPS下载文件(GET方法和POST方法)
  • rhce:列行性(at和cron)
  • kubernetes给service动态增加服务端口
  • 如何将 html 渲染后的节点传递给后端?
  • ubuntu24 finalshell 无法连接ubuntu服务器, 客户端无法连接ubuntu, 无法远程连接ubuntu。
  • 牛客编程初学者入门训练——BC19 牛牛的对齐