JVM是什么

  • 概述

    JVM是Java Virtual Machine的缩写。它是一种基于计算设备的规范,是一台虚拟机,即虚构的计算机。

    JVM屏蔽了具体操作系统平台的信息(显然,就像是我们在电脑上开了个虚拟机一样),当然,JVM执行字节码时实际上还是要解释成具体操作平台的机器指令的。

    通过JVM,Java实现了平台无关性,Java语言在不同平台运行时不需要重新编译,只需要在该平台上部署JVM就可以了。因而能实现一次编译多处运行。(就像是你的虚拟机也可以在任何安了VMWare的系统上运行)

JDK和JRE

  • JRE

    Java Runtime Environment,也就是JVM的运行平台,联系平时用的虚拟机,大概可以理解成JRE=虚拟机平台+虚拟机本体(JVM)。类似于你电脑上的VMWare+适用于VMWare的Ubuntu虚拟机。这样我们也就明白了JVM到底是个什么。
  • JDK

    Java Develop Kit,Java的开发工具包,JDK本体也是Java程序,因此运行依赖于JRE,由于需要保持JDK的独立性与完整性,JDK的安装目录下通常也附有JRE。目前Oracle提供的Windows下的JDK安装工具会同时安装一个正常的JRE和隶属于JDK目录下的JRE。

关于Java

说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:

运行期环境代表着Java平台,开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件),再然后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的转换成机器码执行。

JVM内部结构与运行机制

  • 每个JVM都有两种机制:

①类装载子系统:装载具有适合名称的类或接口

②执行引擎:负责执行包含在已装载的类或接口中的指令

  • 每个JVM都包含:

程序计数器(Program Counter),Java堆(Heap),Java虚拟机栈(Stack),本地方法栈(Native Stack),方法区(Method Area)



对于JVM的学习,在我看来这么几个部分最重要:

Java代码编译和执行的整个过程

JVM内存管理及垃圾回收机制

下面分别对这几部分进行说明:

Java代码编译和执行的整个过程

也正如前面所说,Java代码的编译和执行的整个过程大概是:开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件),再然后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的转换成机器码执行。

  • Java代码编译是由Java源码编译器来完成,也就是Java代码到JVM字节码(.class文件)的过程。 流程图如下所示:

  • Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:

  • Java代码编译和执行的整个过程包含了以下三个重要的机制:

    Java源码编译机制

    类加载机制

    类执行机制

.....更新中

最新文章

  1. 随机函数的代码(srand、rand)
  2. Atitit.现在的常用gui技术与gui技术趋势评价总结
  3. 【poj1733】 Parity game
  4. [zt]OpenCV如何获取视频当前的一帧图像
  5. 最牛B的编码套路(转)
  6. HDU----(3294)Girls' research(manacher)
  7. 【转】Xcode的Architecture参数的意思
  8. 网站页面优化必然趋势—WebP 图片!
  9. win7下jdk安装环境变量配置
  10. [Redux] Redux: Extracting Container Components -- AddTodo
  11. 1、java编程的建议,面试相关
  12. C# 查找指定名称的控件(转)
  13. 一个ubuntu命令
  14. web前端工程师技能总结
  15. sso单点登录,单点登录原理图,单点登录图解,单点登录
  16. 【高并发架构】Redis缓存高并发之-主从架构
  17. [Offer收割] 编程练习赛1
  18. 第57节:Java中流的操作以及编码解码
  19. day8--socket文件传输
  20. 【Scrum】-NO.40.EBook.1.Scrum.1.001-【敏捷软件开发:原则、模式与实践】- Scrum

热门文章

  1. 从零开始的SpringBoot项目 ( 七 ) 统一返回结果集Result 和 异常处理
  2. seo排名顾问不仅仅是关键词排名
  3. Pyqt QImage 与 np array 转换方法
  4. 前端模块化IIFE,commonjs,AMD,UMD,ES6 Module规范超详细讲解
  5. Micro-CMS v1 (Hacker101 CTF)
  6. dump 内存分析
  7. Docker+Kubernetes/K8s+Jenkins视频资料【干货分享】
  8. FastDFS+nginx整合模块安装
  9. 两篇好文 清晰地描述bug 技术总监的忠告
  10. .NET Core加解密实战系列之——对称加密算法