前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jvm基本常识

jvm基本常识

作者头像
挨踢小子部落阁
发布2023-03-15 21:04:50
2300
发布2023-03-15 21:04:50
举报
文章被收录于专栏:挨踢小子部落阁
程序的执行方式

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

字节码和机器码的区别

机器码是电脑cpu直接读取运行的机器指令,运行速度最快,但是非常晦涩难懂,编写起来也比较难。

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

JDK、JRE、JVM的关系
Oracle JDK与OpenJDK
查看JDK版本
代码语言:javascript
复制
java -version

1) 如果是sun/oracle JDK 显示信息为:

代码语言:javascript
复制
[root@localhost ~]# java -versio
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)

说明:

代码语言:javascript
复制
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, 显示信息为:

代码语言:javascript
复制
[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)
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, 它们之间不同的是许可证:

代码语言:javascript
复制
OpenJDK根据许可证GPL v2发布;
Oracle JDK根据Oracle二进制代码许可协议获得许可。
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在程序上是非常接近的, 两者共用了大量相同的代码

Oracle JDK与OpenJDK的区别

OpenJDK使用的是开源免费的FreeType, 可以按照GPL v2许可证使用.GPL V2允许在商业上使用;Oracle JDK则采用JRL(Java Research License,Java研究授权协议) 放出.JRL只允许个人研究使用, 要获得Oracle JDK的商业许可证, 需要联系Oracle的销售人员进行购买。

VM和Hotspot的关系

JVM是《JVM虚拟机规范》中提出来的规范. Hotspot是使用JVM规范的商用产品,除此之外还有Oracle JRockit、IBM的J9也是JVM产品

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

JVM和Java的关系
JVM的运行模式

JVM有两种运行模式:Server模式与Client模式。 两种模式的区别在于:

Client模式启动速度较快,Server模式启动较慢;

但是启动进入稳定期长期运行之后Server模式的程序运行速度比Client要快很多。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 挨踢小子 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 程序的执行方式
  • 字节码和机器码的区别
  • JDK、JRE、JVM的关系
  • Oracle JDK与OpenJDK
    • 查看JDK版本
      • OpenJDK 的来历
        • Oracle JDK的来历
          • Oracle JDK与OpenJDK的区别
          • VM和Hotspot的关系
          • JVM和Java的关系
          • JVM的运行模式
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档