`

一步一步深入jvm(1)—jvm是什么及组成

    博客分类:
  • jvm
阅读更多

java是半编译半解释语言
编译与解释是两个过程,编译是在编译器中,而解释在jvm中。

从图中java先由源文件(java文件)编译生成相应的字节码文件(class文件)。
调用时jvm装载相应的字节码文件,并通过字节码解释器解释为相应的机器指令,由操作系统执行生成相应的机器指令。
看到这里那jvm到底是什么,由什么构成。
什么是jvm。
      jvm全称为Java Virtual Machine中文为Java虚拟机,是Java语言的运行环境,是运行所有Java程序的抽象计算机。它是在实际的计算机上抽象出来的计算机,拥有自己完善的硬件构建(处理器、堆栈、寄存器等),同时也具有相应的指令系统。
     知道了jvm是什么,那jvm是怎么构成的,其实前面已经提到了,它具有处理器,堆栈,寄存器,及指令系统。其实对于实际jvm来说,各个厂家实现的方式具有一定的差异性(IBM与SUN在JVM实现就具有差异性),但都遵守jvm规范。现有的jvm体系结构如下。

 

英文说明

英文

               

中文                         

从图中可以看出jvm包括两个子系统和两个组件:Class loader(类装载器) 子系统,Execution engine(执行引擎) 子系统;Runtime data area (运行时数据区域)组件, Native interface(本地接口)组件。

1:Class loader(类装载器) 子系统
   Class loader(类装载器)作用是根据指定的包名、类名装载相应的class文件到内存即jvm中的Runtime data area (运行时数据区域)的Method Area(方法区)。整个过程中装载器只负责负责文件结构格式能被装载,并不负责能不能运行。

     在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备和解析三步,除了解析外,其它步骤是严格按照顺序完成的,各个步骤的主要工作如下:

      装载:查找和导入类或接口的二进制数据;
      链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;
      校验:检查导入类或接口的二进制数据的正确性;
      准备:给类的静态变量分配并初始化存储空间;
      解析:将符号引用转成直接引用;
      初始化:激活类的静态变量的初始化Java代码和静态Java代码块。

2:Execution engine(执行引擎) 子系统
   Execution engine(执行引擎)又称为解释器,将classes文件的指令解析成机器指令代码,并提交给操作系统执行。
3:Runtime data area (运行时数据区域)
   Runtime data area (运行时数据区域)的核心,也称JVM中的内存,JVM运行程序时使用。详情见后续的文章。
4: Native interface(本地接口)
   与native libraries交互,是与其他编程语言交互的接口,主要为C与C++之间的交互。

这里只是简单的介绍了jvm是什么及jvm的组成。
很多的内容来自于网上。

后续将讲述四部分类容!

 

  • 大小: 28.4 KB
  • 大小: 52.8 KB
  • 大小: 8.1 KB
分享到:
评论

相关推荐

    6.1.1.JVM前奏篇笔记1

    在深入探讨JVM之前,我们先来了解一下Java的开发环境和源码到字节码的转换过程。Java是由Oracle公司提供的Java Platform Standard Edition (Java SE),主要包括Java SE Development Kit (JDK) 和 Java SE Runtime ...

    java课件(jvm),学好java你绝对需要它!

    Java虚拟机(JVM)是Java编程语言的核心组成部分,它为Java程序的运行提供了平台无关性的基础。在深入探讨JVM之前,让我们先理解一下它的基本概念。 Java虚拟机(JVM)是一种抽象的计算设备,它实现了Java的类文件...

    JVM调优攻略.pdf

    JVM内存模型主要由以下几个部分组成: - **3.2.1 程序计数器(Program Counter Register)**:每个线程拥有一个独立的程序计数器,用来记录当前线程执行的字节码指令的位置。它是唯一不会抛出`OutOfMemoryError`的...

    JVM面试专题1

    Java 虚拟机(JVM)是Java编程语言的核心组成部分,它负责执行Java程序的字节码。在面试中,对于JVM的理解是考察开发者技术深度的重要环节。以下是关于JVM类加载过程、内存分配以及垃圾回收等相关知识点的详细说明:...

    jvm详解(java虚拟机详解)

    ### jvm详解(java虚拟机详解) #### Java与JVM概览 ...综上所述,深入理解JVM的工作原理及其内存管理机制对于优化Java程序性能至关重要。通过合理配置JVM参数,可以显著提升程序的运行效率和响应速度。

    JVM学习笔记核心知识点整理

    本文将围绕JVM的核心知识点进行深入探讨,主要包括类文件加载机制、运行时数据、JVM内存模型、GC算法以及垃圾收集器分类等内容。 #### 二、基础知识梳理 ##### 1. Java与JVM简介 - **Java**: 是一门面向对象的...

    Java面试需要掌握的JVM知识.docx

    Java虚拟机(JVM)是Java程序的核心组成部分,它提供了平台无关性的保证,使得Java程序可以在任何支持JVM的操作系统上运行,无需重新编译。JVM通过将Java源代码编译成字节码,然后在运行时将其解释成对应平台的机器...

    20道面试官常问的JVM面试题!.zip

    1. **JVM的结构**:理解JVM的组成部分,包括类加载器、运行数据区、执行引擎、本地方法接口和本地方法库。 2. **类加载机制**:了解加载、验证、准备、解析和初始化这五个阶段,以及双亲委派模型。 3. **垃圾收集...

    【JVM】类的奇幻漂流——类加载机制探秘

    类加载机制是JVM的一个重要组成部分,它确保了程序的正常运行。本文将带你深入理解这个过程,分为装载、连接和初始化三个阶段。 1. 装载(Loading) 装载阶段是类加载的起始,它的主要任务是将`.class`字节码文件从...

    Addison Wesley - programming for the java virtual machine.rar

    《编程Java虚拟机》是由Addison Wesley出版的一本专业书籍,深入探讨了Java虚拟机(JVM)的工作原理和编程技术。这本书对于理解Java程序的运行机制、优化代码以及掌握JVM内部细节具有很高的价值。从文件名来看,提供...

    深入类别载入器快速下载

    Java 类别载入器是Java虚拟机(JVM)的核心组成部分,它负责在运行时查找、加载和初始化类。深入理解类别载入器对于优化应用性能、理解和解决类冲突问题至关重要。本文将详细探讨类别载入器的工作原理、流程以及其在...

    jvms12.pdf(Java虚拟机规范 JDK12版)

    JVM的结构是JVM规范的核心部分,它详细介绍了Java虚拟机的组成和运作原理。这部分包括类文件格式、数据类型、以及运行时数据区的布局。数据类型分为原始类型和引用类型,原始类型又分为整数类型、浮点类型、返回地址...

    Java虚拟机(1)

    ClassLoader是JVM的一个重要组成部分,它的主要任务是加载类文件,将字节码转换为运行时的Java对象。这个过程分为三个步骤:加载、验证和初始化。ClassLoader按照双亲委托模型工作,当一个类被加载时,它首先会委托...

    02_类加载子系统.pptx

    类加载子系统是Java虚拟机(JVM)的重要组成部分,负责将字节码文件(.class文件)从磁盘、网络或其他数据源加载到内存中,并进行校验、解析和初始化,最终形成可以被JVM执行的类。这个过程对于Java程序的运行至关...

    类加载机制ClassLoader

    阅读这些文档有助于深入理解JVM的工作方式,对于进行Java性能调优或开发JVM相关的工具非常有帮助。 总之,类加载机制是Java运行时环境的重要组成部分,理解其工作原理对于提升代码质量和优化程序性能至关重要。通过...

    01-VIP-类加载机制深度剖析(1)1

    Java程序的运行离不开类加载机制,它是JVM的重要组成部分,负责将类的字节码加载到JVM中并进行解析和初始化。本篇将深入探讨类加载的过程、类加载器以及双亲委派机制。 一、类加载过程 1. **加载**:当程序需要...

    java的运行机制

    在深入理解Java语言的过程中,了解其运行机制是至关重要的一步。本文将从Java的编译与执行、JVM(Java虚拟机)的作用、类加载器(ClassLoader)的工作原理以及JRE(Java运行时环境)与JDK(Java开发工具包)的区别等...

    java bytecode

    Java字节码是Java编程语言的核心组成部分,它是Java程序在虚拟机(JVM)上运行的基础。当你编写一个Java源代码文件(.java),通过编译器(javac)将其转化为字节码(.class)文件时,这些字节码就成为JVM能够理解和...

Global site tag (gtag.js) - Google Analytics