一、java虚拟机定义:

虚拟机是一种抽象化的计算机通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

所谓的java虚拟机,就是一台虚拟的机器。它是一款软件,用来执行一系列虚拟计算机指令,大体上虚拟机可以分为系统虚拟机和程序虚拟机。visual Box、VMare就属于系统虚拟机。他们完全是对物理计算机的仿真,提供一个可运行完整操作系统的软件平台。而java虚拟机就是典型程序虚拟机,它专门为执行单个计算机程序而设计,在java虚拟机中执行的指令我们称之为java字节码指令。java发展到今天,出现了很多虚拟机,最初sun使用的叫Classic的java虚拟机,到现在使用最广泛的是HotSpot虚拟机,除了sun以外还有BEA的JRockit,目前JRockit和HotSpot都被甲骨文公司收入旗下,大有整合的趋势。

二、java虚拟机的基本结构

1、类加载子系统:负责从文件系统或者网络中加载class信息,加载的信息放在一起称之为方法去的内存空间。

2、方法区:就是存放类信息、常量信息、常量池信息、字符串字面量和数字常量等。
3、java堆:在java虚拟机启动的时候建立java堆,它是java程序最主要的内存工作区域,几乎所有的对象实例都存放在java堆中,堆空间是所有线程共享的。
4、直接内存:java的NIO库允许java程序使用直接内存,从而提高性能,通常直接内存速度会优于java堆。读写频繁的场合可能会考虑使用。
5、java栈:每个虚拟机线程都有一个私有的栈,一个线程的java栈在线程创建的时候被创建,java栈中保存着局部变量、方法参数、还有java的调用方法和返回值等。
6、本地方法栈:与java栈很类似,最大不同是本地方法栈用于本地方法调用。java虚拟机允许java直接调用本地方法(通常本地方法为C语言编写)
7、垃圾回收系统:是java的核心,也是必不可少的,java有一套自己进行垃圾清理的机制,开发者无需手动清理。
8、PC寄存器:是每个线程私有的空间,java虚拟机会为每个线程创建PC寄存器,在任意时刻,一个java线程总是在执行一个方法,这个方法被称为当前方法,如果当前方法不是本地方法,PC寄存器就会执行当前正在被执行的指令,如果是本地方法,则PC寄存器的值为undefined。寄存器存放如当前执行环境指针、程序计数器、操作栈指针、计算的变量指针等信息。
9、执行引擎:虚拟机最核心的就是执行引擎了,它负责执行虚拟机的字节码。一般用户先编译成机器码后执行。

java虚拟机是什么?相关推荐

  1. Dalvik虚拟机与java虚拟机的区别

    1.Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式DEX(Dalvik Executable). 2.Java虚拟机将.java文件编译成字节码文件(.class ...

  2. 深入理解Java虚拟机——第二章——Java内存区域与内存溢出异常

    运行时数据区域 Java虚拟机运行时数据区域 程序计数器 程序计数器可以看做是当前线程所执行的字节码的行号指示器.字节码解释器工作时就是通过改变这个计数器的值来选取下一条所需要执行的字节码指令,分支. ...

  3. 《Java虚拟机规范》阅读(三):Class文件格式

    每一个Class都对应着唯一的一个类或借口的定义信息.这里,我们称为"Class文件格式"只是通俗的将任意一个符合有效的类或借口的格式这么称呼,但是它并不一定是以磁盘文件的形式存在 ...

  4. 手写java_手写JAVA虚拟机(二)——实现java命令行

    咱们都知道,咱们编译.java并运转.class文件时,需求一些java指令,如最简略的helloworld程序.java初学者可以看一下下面的教程. 这儿的程序最好不要加包名,因为加了包名的话编译和 ...

  5. java 参数类型不确定_详细解析Java虚拟机的栈帧结构

    什么是栈帧? 正如大家所了解的,Java虚拟机的内存区域被划分为程序计数器.虚拟机栈.本地方法栈.堆和方法区.(什么?你还不知道,赶紧去看看<Java虚拟机内存结构及编码实战>)这次要介绍 ...

  6. mysql种编译码写在哪_深入理解Java虚拟机(程序编译与代码优化)

    对于性能和效率的追求一直是程序开发中永恒不变的宗旨,除了我们自己在编码过程中要充分考虑代码的性能和效率,虚拟机在编译阶段也会对代码进行优化.本文就从虚拟机层面来看看虚拟机对我们所编写的代码采用了哪些优 ...

  7. 《深入理解Java虚拟机》(第二版)学习3:垃圾收集器

    垃圾收集器 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. 我们这里讨论的收集器主要是基于JDK 1.7 Update 14之后的 Hotspot VM . Serial 收 ...

  8. 《深入理解Java虚拟机》(第二版)学习1:JVM的内存划分

    运行时数据区 先来一张图描述一下 JVM 的内存划分 PS:自己画的,丑是难免丑了点- 程序计数器(Program Counter Register) 程序计数器(Program Counter Re ...

  9. java线程的优先级是数字越大优先级越高_《深入理解Java虚拟机》5分钟速成:12章(Java内存模型与线程)...

    第12章 Java内存模型与线程 前言: 1.物理机如何处理并发问题? 2.什么是Java内存模型? 3.原子性.可见性.有序性的具体含义和应用实现? 4.volatile 关键字特性? 5.基于vo ...

  10. [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义...

    前言简介 class文件是源代码经过编译后的一种平台中立的格式 里面包含了虚拟机运行所需要的所有信息,相当于 JVM的机器语言 JVM全称是Java Virtual Machine  ,既然是虚拟机, ...

最新文章

  1. 无线传感器网络协议与体系结构 思维导图 (book) Protocols and Architectures for Wireless Sensor Networks, Holger Karl
  2. 集合论——二元关系的表示方法,特殊的二元关系及关系的运算
  3. 完美刷机显示云服务器,完美刷机显示云服务器
  4. Django框架(17.Django中的元选项)
  5. mysql 执行计划 代价_mysql explain执行计划详解
  6. 嵌入式Jetty和Apache CXF:借助Spring Security来保护REST服务
  7. 工业4.0时代,工业交换机在智能电网建设中有什么作用?
  8. 南华大学计算机学院吴取劲,一种基于图深度优先搜索的基本路径集自动生成优化算法-南华大学学报.PDF...
  9. sort -nr作用 linux,【Linux高频命令专题(1)】sort
  10. mysql的请求分发,基于 gorilla/mux 实现路由匹配和请求分发:服务单页面应用
  11. 玩转Win7语音识别功能 让Win7“听话”
  12. C++--第9课 - 构造与析构 - 上
  13. 程序设计基础C语言电子书,程序设计基础..pdf
  14. java gis 矢量数据结构_2.4. 矢量数据结构
  15. java中token什么意思_java中Token验证用法 什么是Token
  16. 《我十年的程序员生涯》系列之三:阳光灿烂的日子
  17. 成功实现有线路由器和无线路由器连接上网
  18. vue组件传值 prop传递对象
  19. TortoiseSVN文件夹及文件图标不显示解决方法
  20. Oracle 12c新特性-多租户的维护管理

热门文章

  1. 软件著作权申报中60页标准代码文档的写作经验谈(1)
  2. cocostudio的TextField空件实现光标。
  3. Linux内核的裁剪移植,Linux内核裁剪移植学习分享
  4. Mybatis教程-实战
  5. 单片机CC2530学习笔记
  6. axure导入的元件库不见了_Axure教程丨制作自己的Axure元件库
  7. 我的世界Java版最诡异的种子_我的世界:MC出现诡异的种子,地域不停地重复
  8. 美区苹果id被禁用原因和解除限制方法
  9. java根据ip获取经纬度城市地址
  10. ODI知识模块--IKM Oracle Incremental Update