【是什么】

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。

【JRE/JDK/JVM】

JRE(JavaRuntimeEnvironment,Java运行环境),也就是Java平台。所有的Java 程序都要在JRE下才能运行。普通用户只需要运行已开发好的java程序,安装JRE即可。

JDK(Java Development Kit)是程序开发者用来来编译、调试java程序用的开发工具包。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是 安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。

JVM(JavaVirtualMachine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。

标签:

字节码是java虚拟机的指令组_JVM??相关推荐

  1. lua虚拟机字节码修改_Java虚拟机(JVM)面试题大集合

    本文整理自:ThinkWon  链接: blog.csdn.net/ThinkWon/article/details/104390752 本文知识目录 1.Java内存区域 说一下 JVM 的主要组成 ...

  2. Java生产环境下性能监控与调优详解 第8章 JVM字节码与Java代码层调优

    第8章 JVM字节码与Java代码层调优 8-1 jvm字节码指令-1 8-2 jvm字节码指令-2 8-3 i++与++i 8-4 字符串+拼接 8-5 Try-Finally字节码 8-6 Str ...

  3. 从字节码看java中 this 的隐式传参

    从字节码看java中 this 隐式传参具体体现(和python中的self如出一辙,但是比python中藏得更深),也发现了 static 与 非 static 方法的区别所在! static与非s ...

  4. 【Java 虚拟机原理】线程栈 | 栈帧 | 局部变量表 | 反汇编字节码文件 | Java 虚拟机指令手册 | 程序计数器

    文章目录 一.线程栈 二.栈帧 三.栈帧 - 局部变量表 四.反汇编字节码文件 五.Java 虚拟机指令手册 六.程序计数器 一.线程栈 装载 HelloWorld.class 字节码文件到 Java ...

  5. 第 1 章 一 JVM 和 Java 体系架构 (虚拟机介绍、字节码、Java跨平台性)

    第 1 章 JVM 和 Java 体系架构 1.JVM 前言 作为Java工程师, 你是否也遇到过这些问题? 运行着的线上系统突然卡死,系统无法访问,甚至直接OOM! 想解决线上JVM GC问题,但却 ...

  6. PHP-7.1 源代码学习:字节码在 Zend 虚拟机中的解释执行 之 概述

    本文简要介绍 zend 虚拟机解释执行字节码的基本逻辑以及相关的数据结构,关于 PHP 源代码的下载,编译,调试可以参考之前的系列文章 execute_ex 我们来看看执行一个简单的脚本 test.p ...

  7. 透过字节码分析java基本类型数组的内存分配方式。

    我们知道java中new方式创建的对象都是在堆中创建的,而局部变量对应的值存放在栈上.那么java中的int [] arr={1,2,3}是存放在什么地方的呢,int []arr = new int[ ...

  8. java自带的字节码技术_读懂字节码-还原JAVA源码

    已知有两个类: public class Father extends GrandFather { public String name = "father"; public vo ...

  9. php 字节码查看,PHP-7.1 源代码学习:字节码在 Zend 虚拟机中的解释执行 之 概述...

    前言 本文简要介绍 zend 虚拟机解释执行字节码的基本逻辑以及相关的数据结构,关于 PHP 源代码的下载,编译,调试可以参考之前的系列文章 execute_ex 我们来看看执行一个简单的脚本 tes ...

最新文章

  1. 一阶rc电路时间常数_波形产生电路中的RC在电路中的作用是什么
  2. spring和spring_Spring交易可见性
  3. python数据挖掘与机器学习实战_Python数据挖掘与机器学习技术入门实战(1)
  4. Linux多线程实践(10) --使用 C++11 编写 Linux 多线程程序
  5. Windows域控 设置全域的密码策略 【全域策略生效】
  6. Artifacts Gallery - Seahorse Collector, The
  7. mysql 修改root密码 修改账户登录host
  8. 苹果tv4安装,I play.iOS13代pv4安装,播放国内视频,
  9. J-LINK烧录bin文件
  10. excel使用教程_正版办公软件教程书Word Excel PPT办公应用从入门到精通教学加视频!...
  11. java高级工程师认证考试_Java高级软件工程师人才缺口巨大
  12. FRP分享 Padavan
  13. 蓝桥杯 算法训练 幸运的店家
  14. python分析方向的第三方库_Python 机器学习方向的第三方库是
  15. ClickHouse MergeTree副本表和分布式表(切片)
  16. 安全模式下的自动启动
  17. python解释器和IDLE快捷键
  18. PyQt5按下按键选择文件夹并显示
  19. css边框的各种设定
  20. Pandas常用操作命令(四)——数据切片、筛选

热门文章

  1. jmeter进行https协议的测试
  2. jq 按钮能触发submit吗
  3. 怎样对ZBrush中的材料进行渲染和着色
  4. Java 编程下 Eclipse 如何设置单行代码显示的最大宽度
  5. (转)c3p0配置大全
  6. 信息化基础建设 开发框架
  7. Weblogic二种修改端口的方法(转)
  8. 浅谈对BFC的认识,以及用bfc解决浮动问题
  9. 耿建超英语语法---被动语态
  10. OpenID 和 OAuth 的区别及第三方登录的安全隐患分析