虚拟机概述

所谓虚拟机(Virtual Machine)就是一台虚拟的计算机,它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。

比较出名的系统虚拟机有Visual Box、VMware,他们是完全对物理计算机的仿真,提供一个可运行完整操作系统的软件平台。

Java虚拟机就是典型的程序虚拟机,他专门为执行单个计算机程序而设计的,在Java虚拟机中执行的指令我们称为Java字节码指令。

无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中,比如java虚拟机我们可以设置堆内存大小,VMware的虚拟机我们可以设置CPU数,内存数等等。这些就是虚拟机提供的资源,软件运行会被限制在该资源中。

java虚拟机

java虚拟机是一台执行java字节码的虚拟计算机,他拥有独立的运行机制,其运行的java字节码也未必由java源文件编译而来。
java虚拟机是在操作系统上做了一层封装,屏蔽了具体操作系统API的底层细节,使得java程序具有跨平台的特性。
JVM是跨语言的,多种语言可以运行在JVM虚拟机上,从而可以利用JVM带来的跨平台特性和优秀的垃圾回收机制。以及可靠的即时编译器。

多种编程语言只要提供各自的编译器,把源代码编译成符合java虚拟机规范的字节码文件,就可以在JAVA虚拟机上运行。这时应该叫JVM字节码文件了。

java技术的核心就是JAVA虚拟机,因为所以java程序都运行在java虚拟机内部。

java虚拟机的作用

java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译成对应平台(unix、windows等)的机器指令执行,每一条java指令,java虚拟机规范中都有其详细定义,怎么取操作数,怎么处理操作数等。
特点:

  • 一次编译,处处运行。
  • 自动垃圾回收。
  • 自动内存管理
java虚拟机的位置


java虚拟机运行在操作系统之上,没有与硬件直接关联,对硬件的操作都是通过操作系统间接实现。

java虚拟机在java体系中的位置:

java虚拟机是在JRE java运行时环境的最底层。

JAVA虚拟机的整体结构


java虚拟机主要分为三个部分:

  1. 类装载子系统:负责装载字节码文件到内存当中,生成Class对象。
  2. 运行时数据区:java程序运行时数据的存放,比如对象,类信息,引用等等。
  3. 执行引擎:分为解释器、JIT即时编译器、垃圾回收器,把高级语言解释编译成机器语言,用于解释执行java程序

java程序执行流程

  1. 首先是java源代码经过编译器(比如javac)进行编译,生成字节码文件。
  2. 字节码文件被java虚拟机的类加载子系统装载并生成对应的信息,比如一个个Class对象。
  3. 执行引擎对字节码进行解释/编译 执行。
java虚拟机的生命周期

虚拟机的启动:java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类来完成的,这个类由虚拟机的具体实现指定。

虚拟机的执行:一个运行中的java虚拟机有一个清晰的任务,就是运行java程序。程序开始执行时虚拟机运行,程序执行结束它就停止。执行一个所谓的java程序的时候,真真正正在执行的是一个叫做java虚拟机的进程。 一个运行中的java进程实际上是一个java虚拟机进程。

虚拟机的退出:程序正常执行结束、程序遇到异常或者错误而异常终止、因为操作系统错误而导致java虚拟机终止、某个线程执行RunTime类的exit方法或者half方法,或者System类的exit方法,并且java安全管理器也允许这个操作。 以上的情况都会导致java虚拟机进程退出。

java虚拟机的种类

java虚拟机有多种多样的种类,由不同的厂商提供,比如HotSpot VM、SUN Classic VM、Exact VM等等。不同的虚拟机的具体实现会有所不同,但是都遵循着java虚拟机的规范。

HotSpot虚拟机:目前HotSpot虚拟机占有绝对的市场地位,不管JDK6、JDK8、SUN/Oracle JDK 和Open JDK的默认虚拟机都是HotSpot。

Java虚拟机(JVM)概念简介相关推荐

  1. Java虚拟机JVM简介与理解(三)

    Java虚拟机JVM简介与理解(三) 问题背景 PC程序计数器 虚拟机栈 本地方法栈 堆 元空间 方法区 运行时常量池 直接内存 Lyric: 彻底把我囚禁在你的呼吸 问题背景 Java虚拟机JVM简 ...

  2. Java虚拟机JVM简介与理解(一)

    Java虚拟机JVM简介与理解(一) 问题背景 JVM(Java Virtual Machine) Java虚拟机JVM简介与理解(二) Lyric: 擦干是否就看不见你 问题背景 Java虚拟机JV ...

  3. Java虚拟机JVM的内存管理

    Java虚拟机JVM的内存管理 关键词 一.JVM整体架构 根据 JVM 规范,JVM 内存共分为虚拟机栈.堆.方法区.程序计数器.本地方法栈五个部分. 名称 作用 特征 配置参数 异常 程序计数器 ...

  4. java虚拟机原理pdf_揭秘Java虚拟机 JVM设计原理与实现pdf

    揭秘Java虚拟机 JVM设计原理与实现 内容简介 <揭秘Java虚拟机:JVM设计原理与实现>从源码角度解读HotSpot的内部实现机制,本版本主要包含三大部分--JVM数据结构设计与实 ...

  5. 深入理解java虚拟机JVM(下)

    深入理解java虚拟机JVM(下) 链接:https://pan.baidu.com/s/1c6pZjLeMQqc9t-OXvUM66w 提取码:uwak 复制这段内容后打开百度网盘手机App,操作更 ...

  6. Java虚拟机JVM学习05 类加载器的父委托机制

    Java虚拟机JVM学习05 类加载器的父委托机制 类加载器 类加载器用来把类加载到Java虚拟机中. 类加载器的类型 有两种类型的类加载器: 1.JVM自带的加载器: 根类加载器(Bootstrap ...

  7. 深入理解java虚拟机JVM(上)

    深入理解java虚拟机JVM(上) 链接:https://pan.baidu.com/s/1c6pZjLeMQqc9t-OXvUM66w 提取码:uwak 复制这段内容后打开百度网盘手机App,操作更 ...

  8. 【读书笔记】实战JAVA虚拟机JVM故障诊断与性能优化 读书笔记

    文章目录 1.概述 1.1 **第一章:初探java虚拟机** 1.2 认识java虚拟机的基本结构 1.3 常用Java虚拟机参数 1.4 垃圾回收器 1.5 垃圾收集器以及内存分配 1.6 性能监 ...

  9. 实战java虚拟机 百度云_《实战JAVA虚拟机 JVM故障诊断与性能优化》pdf百度云下载...

    内容简介· · · · · · 随着越来越多的第三方语言(Groovy.Scala.JRuby等)在Java虚拟机上运行,Java也俨然成为了一个充满活力的生态圈.<实战Java虚拟机--JVM ...

  10. Java 虚拟机(JVM)原理介绍

    Java 虚拟机[JVM]原理介绍 1.概述 2.Java类的加载原理机制 2.1 .Java类的加载过程 2.2 .Class loader (类加载器) 2.2.1 类的生命周期 2.2.1.1 ...

最新文章

  1. gvim 实现自动全文排版
  2. 综合使用union和limit区分结果并限制返回结果集的条数
  3. Android中再按一次退出实现
  4. ubuntu在xampp下安装memcache扩展
  5. Linux指令--touch
  6. 接入网NFV引入路径:CPE、OLT和BNG或将率先云化
  7. [算法模板]高斯消元
  8. CryoSat-2卫星介绍
  9. 转:Java中abstract和interface的区别
  10. 价值连城 图灵奖得主Yann LeCun 杨立昆的采访 给AI从业者的建议
  11. 在MVC中使用泛型仓储模式和依赖注入实现增删查改
  12. 欧瑞变频器800参数设置_(完整版)ACS800变频器参数设定
  13. python填充excel单元格颜色_使用python3+openpyxl模块对excel表格进行背景颜色的填充...
  14. OA性能调优方案(一)
  15. 将网页,网站(HTML,php,css)上传浏览器,实现输入网址即可访问(保姆级教学)
  16. matlab爆炸建模,7.2.5萨墓基尔加丹M螺旋爆炸技能建模分析
  17. go编译库给c语言map参数,在 Go 中使用 C 语言的动态库
  18. 基于s32k146的IO口模拟串口
  19. 边缘和轮廓检测——计算机视觉的应用
  20. mobilefacenet caffe2WK

热门文章

  1. 《天天数学》连载36:二月五日
  2. Python学习笔记:藉由私有属性实现封装
  3. 2017.7.30 玩具装箱 思考记录
  4. 【英语学习】【Level 08】U03 My Choice L2 All-time favorite character
  5. 【英语学习】【Daily English】U12 E-World L01 Do you have Wi-Fi here?
  6. Pentium II Pentium III架构/微架构/流水线 (3) - P6执行核详解 (指令时延吞吐量,执行单元/发射口)
  7. 二、Arcgis api js -- Graphic
  8. Android 3D系列之基本概念篇
  9. CentOS7环境下搭建flume
  10. C开源hash代码uthash的用法总结(2)