jvm优化

JRE,JVM和JDK是您经常与Java编程语言结合使用的三个术语,大多数人会混淆它们或认为它们都是相同的。 在本文中,您将了解什么是Java运行时(JRE),什么是Java虚拟机(JVM),什么是Java开发工具包(JDK)以及即时编译器或JIT。 一旦了解了JRE,JVM或JDK意味着什么,就可以轻松地自己区分它们。 本文是每个Java程序员都应该知道的Essential JVM选项的延续。 如果您还没有阅读这些文章,则也可以阅读它们。

现在,让我们详细了解所有JRE(Java运行时环境),JVM(Java虚拟机)和JDK(Java开发工具包),以了解它们之间的区别。

1. Java运行时环境(JRE)

Java在浏览器,移动设备,电视或机顶盒中无处不在,如果您使用Java编程语言,那么您会知道捆绑在JAR(Java归档)文件中的Java代码需要Java虚拟机JVM才能执行。执行它。

现在, JVM是一个可执行文件或程序,与任何其他程序一样,您可以将其安装到计算机中。 您已经看到浏览器经常建议下载JRE运行从Internet下载的Java Applet。

java.oracle.com中提供了各种版本的JRE,并且大多数只想在浏览器中执行Java程序或独立下载JRE的用户。 所有浏览器(包括Internet Explorer,Firefox和Chrome)都可以使用JRE。

2. Java虚拟机(JVM)

当您下载JRE并在您的计算机上安装时,您已获得创建JVM所需的所有代码。 使用诸如Java HelloWorld之类的Java命令运行Java程序时,将创建Java虚拟机。

JVM负责将字节码转换为特定于机器的代码,这就是为什么您为Windows,Linux或Solaris使用不同的JVM,但是在所有这些操作系统上都可以运行一个JAR的原因。

Java虚拟机是Java编程语言的核心,并为Java程序员提供了一些功能,包括内存管理和垃圾收集,安全性以及其他系统级服务。

可以自定义Java虚拟机,就像我们可以在创建JVM时指定位于JVM内部的启动内存或堆大小的最大内存一样。

如果我们为java命令提供了无效的参数,它可能会拒绝创建Java虚拟机,方法是说“创建Java虚拟机失败:无效参数”。

这是Java程序员用来学习更多有关JVM,性能和内存管理(包括解决Java中的内存泄漏问题)的高级课程之一。

3. Java开发套件(JDK)

JDK也被简称为JRE,但它比JRE更为重要,它提供了编译和执行Java程序所需的所有工具和可执行文件。 就像JRE一样,JDK也是特定于平台的,您需要使用单独的安装程序才能在Linux和Windows上安装JDK 。

JDK的当前版本是1.7,也称为Java7,它包含基于Java7和Java编程规则的javac(Java编译器),可以使用新功能(例如Switch中的String , fork-join框架或Automatic Resource)执行Java7代码。管理。

安装JDK时,安装文件夹通常称为JAVA_HOME。 所有二进制文件都位于JAVA_HOME / bin内,其中包括javac,java和其他二进制文件,并且它们必须位于系统PATH中才能编译和执行Java程序。 有关Path的详细信息,请参见 如何在Windows和UNIX中为Java设置PATH 。

4. JRE,JDK和JVM之间的区别

简而言之,JRE,JDK和JVM之间几乎没有什么区别:

1)JRE和JDK作为安装程序提供,而JVM与它们捆绑在一起。

2)JRE仅包含执行Java程序的环境,但不包含其他用于编译Java程序的工具。

3)JVM随JDK和JRE一起提供,并在执行Java程序时通过提供“ java”命令创建。

4.即时编译器(JIT)

最初,Java被指控性能低下,因为它既编译又解释指令。 由于编译或Java文件到类文件是独立于Java程序的执行的,请勿混淆。

这里,编译字用于字节码到机器指令的翻译。 JIT是Java虚拟机的高级部分,它通过同时编译相似的字节码来优化字节码到机器指令转换部分,从而减少了总体执行时间。

JIT是Java虚拟机的一部分,还执行其他一些优化,例如内联函数。

所有这些都在JRE,JDK和Java虚拟机上,并且它们之间是有区别的。 尽管它们看起来很相似,但是它们是不同的,并且对JVM,JIT或JDK有清晰的了解有助于Java编程。

您可能喜欢的其他JVM内部文章

  • Java中的堆栈和堆内存之间的区别? ( 回答)
  • 生产应用程序的10个基本JVM选项( 文章)
  • 深入学习JVM内部知识的前5门课程( 课程)
  • 了解Java内存管理和GC的前5本书? ( 书籍)
  • 垃圾回收如何在Java中工作? ( 文章)
  • 32位和64位JVM之间的区别? ( 回答)
  • 关于Java堆内存的10分? ( 文章)
  • -XX:UseCompressedOOPS在64位JVM中做什么? ( 文章)
  • 您如何找到Java应用程序的CPU和内存使用情况? ( 文章)
  • 在JVM中加载或初始化类时? ( 文章)
  • Classloader如何在Java中工作? ( 文章)
  • 学习性能的前五门高级Java课程? ( 课程)

感谢您到目前为止阅读本文。 如果您发现此JRE,JVM和JDK文章有用,请与您的朋友和同事分享。 如果您有任何疑问或反馈,请留言。

翻译自: https://www.javacodegeeks.com/2020/08/difference-between-jvm-jir-jre-and-jdk-in-java.html

jvm优化

jvm优化_Java中JVM,JIR,JRE和JDK之间的区别相关推荐

  1. java 静态变量和非静态_Java中静态和非静态变量之间的区别

    变量为我们提供了程序可以操纵的命名存储.Java中的每个变量都有一个特定的类型,该类型确定变量的内存大小和布局.可以存储在该内存中的值的范围:以及可以应用于该变量的一组操作. 静态变量 静态变量也称为 ...

  2. java jli.dll_JVM、JRE、JDK之间的区别和联系,你居然还不知道?

    JDK包含了JRE,JRE包含了JVMJDK:java开发工具包,针对java开发人员,可以编译运行java程序 JRE:java运行时环境,针对使用java程序的客户,可以运行字节码(.class) ...

  3. SQL Server中唯一索引和唯一约束之间的区别

    This article gives you an overview of Unique Constraints in SQL and also the Unique SQL Server index ...

  4. JRE和JDK有什么区别,我们为什么使用JDK?

    1.1.2.       JRE和JDK有什么区别,我们为什么使用JDK? 1.1.3.       如何配置并修改环境变量.环境变量有什么用? 1.1.4.       系统环境变量和用户环境变量有 ...

  5. IO多路复用中select、poll、epoll之间的区别

    本文来说下IO多路复用中select.poll.epoll之间的区别 文章目录 什么是IO多路复用 为什么有IO多路复用机制 同步阻塞(BIO) 同步非阻塞(NIO) IO多路复用(现在的做法) 3种 ...

  6. 解析java中方法的重载和重写之间的区别与联系

    解析java中方法的重载和重写之间的区别与联系 1 不同点 1.1 方法重写是在不同的类中(父子类),方法重载是在同一类中 1.2 方法重载最初的目的是构造方法的多样化,方法重写的目的是让重写的方法满 ...

  7. java虚拟机参数优化_JAVA虚拟机JVM参数优化(2):垃圾收集算法选择

    JAVA虚拟机JVM优化重要性,昨天JAVA虚拟机JVM参数优化(1)文章中已经描述,今天我们来讨论JAVA虚拟机在不同性能要求下如何选择三种垃圾收集算法. JVM内部结构如下图所示: 串行收集用于单 ...

  8. jvm优化_在JVM中记录世界停顿

    jvm优化 不同的事件可能导致JVM暂停所有应用程序线程. 这种暂停称为世界停止(STW)暂停. 触发STW暂停的最常见原因是垃圾回收( 例如github中的示例),但是不同的JIT操作( 示例),偏 ...

  9. java中的vm自变量_java中JVM虚拟机内存模型详细说明

    java中JVM虚拟机内存模型详细说明 JVM的内部结构如下图: 一个优秀Java程序员,必须了解Java内存模型.GC工作原理,以及如何优化GC的性能.与GC进行有限的交互,有一些应用程序对性能要求 ...

最新文章

  1. Android LayoutInflater 源码解析
  2. HttpWatch截取网页数据的工具以及介绍
  3. UML图系列——UML概要
  4. ActiveMQ安装笔记
  5. IOS6 新特性之UIRefreshControl
  6. python函数定义参数类型和返回值类型
  7. 俺也用一下mandriva,恩,KDE的效果的确不错
  8. Cassandra Wiki Login JmxSecurity
  9. android声音播放mp3文件,如何在android中播放音频文件
  10. Java从入门到精通章节练习题——第三章
  11. 【Auto.js教程】Auto.js入门及第一个示例程序
  12. svn提示commit:remains in tree-conflict的解决方法
  13. Python爬虫笔记【一】模拟用户访问之验证码清理(4)
  14. 利用SQL查询扶贫对象医保报销比率的审计方法
  15. 关于uIP的移植以及部分特性解析和勘误
  16. 如何让ffplay或者ffmpeg支持H265编码的rtmp/http-flv 实时直播流
  17. UI设计必备工具有哪些?
  18. 环签名——典型的数字签名技术
  19. networkx_to_metis
  20. 微信小程序:组件Component接收不到参数id

热门文章

  1. 人脸验证 DeepID 算法介绍及实战
  2. 不是竞赛生学计算机专业,非计算机专业计算机设计大赛总结
  3. 永中文档在线转换预览双活实现方案
  4. wordpress会员插件_5个最佳WordPress会员插件(比较)– 2020年
  5. 计算机配置介绍英语作文,需一篇用英文介绍笔记本电脑的小文章!~
  6. android id 重名_android 中不同的Xml中id可以重名吗?
  7. 7-80 大炮打蚊子(C语言)
  8. 【疑难杂症】 打开文件 出现中文汉字乱码 解决办法(详细)
  9. 利用matlab怎样进行频谱分析
  10. Netty入门与实战教程