java虚拟机的原理和作用

合集下载

JVM工作原理

JVM工作原理

JVM工作原理JVM(Java虚拟机)是Java程序的运行环境,它负责将Java源代码编译成可执行的字节码,并提供运行时环境来执行字节码。

JVM的工作原理涉及到类加载、内存管理、垃圾回收、即时编译等多个方面。

1. 类加载JVM通过类加载器(ClassLoader)来加载Java类。

类加载器根据类的全限定名(包括包名和类名)在类路径中查找对应的字节码文件,并将其加载到内存中。

类加载器采用双亲委派模型,即先由父类加载器尝试加载类,如果父类加载器无法加载,则由子类加载器尝试加载。

这种模型保证了类的唯一性和安全性。

2. 内存管理JVM将内存分为多个区域,包括方法区、堆、栈和程序计数器。

方法区存储类的元数据信息,如字段、方法、常量池等。

堆是存放对象实例的区域,通过垃圾回收机制来管理内存的分配和释放。

栈用于存储方法的局部变量和方法调用信息。

程序计数器用于指示当前线程执行的字节码指令。

3. 垃圾回收JVM通过垃圾回收机制自动回收不再使用的对象内存。

垃圾回收器会定期扫描堆内存,标记所有还在使用的对象,然后清理掉未被标记的对象。

常见的垃圾回收算法有标记-清除、复制、标记-整理等。

JVM还提供了不同的垃圾回收器,如Serial、Parallel、CMS、G1等,可以根据应用场景选择合适的垃圾回收器。

4. 即时编译JVM使用即时编译器(Just-In-Time Compiler)将热点代码(经常被执行的代码)编译成本地机器码,以提高执行效率。

JVM会监测程序的运行情况,根据热点代码的执行频率和调用关系进行优化编译。

即时编译器可以选择不同的编译策略,如解释执行、编译执行或混合执行。

5. 内存模型JVM定义了Java程序在多线程环境下的内存模型,保证多线程的内存可见性和有序性。

内存模型规定了线程之间如何进行通信和同步。

JVM使用主内存和工作内存的概念,线程之间的共享变量存储在主内存中,每个线程有自己的工作内存,线程对共享变量的操作先在工作内存中进行,然后通过主内存来同步和通信。

java的底层原理

java的底层原理

java的底层原理
Java是一种编程语言,其底层原理包括以下几个方面:1.Java虚拟机:Java 程序运行的环境是Java虚拟机(JVM),它通过解释和执行Java程序代码,在各个操作系统中实现了Java程序的跨平台性。

2.Java字节码:Java程序在编译后生成的是字节码(bytecode),它是一种中间代码格式。

Java虚拟机通过解释执行这种字节码来实现Java程序的运行。

3.内存管理:Java虚拟机负责Java程序的内存管理,包括堆内存和栈内存的管理。

Java程序中的对象都存在于堆内存中,而基本数据类型和方法中的局部变量等存在于栈内存中。

4.垃圾回收:Java虚拟机还负责垃圾回收,自动释放不再被程序使用的内存空间,避免了C++等语言的内存泄漏问题。

5.Class文件结构:Java程序代码编译后生成的字节码被保存在Class文件中。

Class文件包括类、接口、方法等的声明和字节码指令等,Java虚拟机通过解析和执行这些指令来运行Java程序。

6.Java 类加载机制:Java程序在运行时通过Java类加载机制将需要的类加载到JVM 中,成为可执行代码,这个过程包括类的加载、连接和初始化等几个阶段。

java虚拟机的工作原理

java虚拟机的工作原理

java虚拟机的工作原理Java虚拟机(JVM)是Java程序运行的环境,它负责解释和执行Java字节码。

JVM的工作原理可以分为三个主要的部分:类加载、字节码执行和垃圾回收。

1.类加载:JVM通过类加载器将Java字节码加载到内存中。

类加载器根据类路径在文件系统或网络中查找并读取字节码文件,然后将其转化为JVM运行时数据结构,如类和方法的元数据。

加载完成后,JVM会在方法区中存储类的元数据,并在堆中分配内存来存储类的实例。

2.字节码执行:3.垃圾回收:JVM提供垃圾回收机制来自动释放不再使用的内存。

JVM会跟踪每个对象的引用,当一个对象没有引用时,即被视为垃圾。

垃圾回收器定期执行垃圾收集操作,释放垃圾对象占用的内存。

垃圾回收器有不同的实现策略,如标记-清除、引用计数、复制、标记-整理等。

除了以上三个主要的部分,JVM还包含其他组件,如堆内存、栈、方法区等。

堆内存用于存储对象实例,栈用于存储局部变量和方法调用参数,方法区用于存储类的元数据和静态数据。

JVM的工作过程如下:1. 通过类加载器加载Java字节码。

2.解释执行或JIT编译字节码。

3.根据需要进行垃圾回收和内存管理。

4.执行程序。

JVM的优点是跨平台性、自动内存管理和高性能。

通过JVM,Java程序可以在不同的硬件和操作系统上运行,无需修改源代码。

JVM的自动内存管理功能减轻了开发人员对内存管理的负担,避免了内存泄漏和越界访问等错误。

JVM的即时编译技术能够将热点代码优化为本地机器代码,提高程序的执行效率。

在实际的Java应用开发中,了解JVM的工作原理有助于编写高效的代码和解决性能问题。

开发人员可以通过调整JVM参数、选择合适的垃圾回收器和内存分配策略来优化程序的性能。

同时,了解JVM的工作原理还有助于理解虚拟机层面的问题和调优技巧,提升应用的可靠性和稳定性。

jvm原理

jvm原理

JVM 原理解释JVM 全称是 Java Virtual Machine ,Java 虚拟机,这个 JVM 你是看不到的,它存在内存中。

我们知道计算机的基本构成是:运算器、控制器、存储器、输入和输出设备,那这个 JVM 也是有这成套的元素,运算器是当然是交给硬件 CPU 还处理了,只是为了适应“一次编译,随处运行”的情况,需要做一个翻译动作,于是就用了JVM 自己的命令集,JVM 的命令集则是可以到处运行的,因为 JVM 做了翻译,根据不同的CPU ,翻译成不同的机器语言。

JVM 是一个内存中的虚拟机,那它的存储就是内存了,我们写的所有类、常量、变量、方法都在内存中。

JVM 的组成部分Class Loader 类加载器类加载器的作用是加载类文件(.class)到内存,Class Loader 加载的 class 文件是有格式要求的。

类加载的最终产品是位于运行时数据区的堆区的Class对象。

Class对象封装了类在方法区内部的数据结构。

并且向JAVA程序提供了访问类在方法区内的数据结构。

JVM加载class文件的原理机制1. Java 中的所有类,必须被装载到 JMV 中才能运行,这个装载工作是由 JVM 中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中。

2. Java中的类大致分为三种:a) 系统类b) 扩展类c) 由程序员自定义的类3. 类装载方式,有两种:a) 隐式装载,程序在运行过程中当碰到通过 new 等方式生成对象时,隐式调用类装载器加载对应的类到jvm中。

b) 显式装载,通过 class.forname() 等方法,显式加载需要的类。

4. 类加载的动态性体现一个应用程序总是由n多个类组成,Java 程序启动时,并不是一次把所有的类全部加载后再运行,它总是先把保证程序运行的基础类一次性加载到 JVM 中,其它类等到 JVM 用到的时候再加载,这样的好处是节省了内存的开销。

八股文java面试题

八股文java面试题

八股文java面试题一、Java面试题1.JVM(Java虚拟机)的作用是什么?JVM是Java虚拟机的简称,它可以在操作系统之上独立运行,是用于运行Java程序的虚拟机,它通过编译Java源代码,并将它转换为与硬件无关的JVM可执行程序,能够做到跨平台,且拥有安全性、负责性、健壮性和可伸缩性等特点,可以使Java程序在计算机上运行。

2.Java垃圾回收机制的原理是什么?Java垃圾回收机制是通过“引用计数”和“可达性分析”算法去探测到未使用的内存,来调整可用的内存。

“引用计数”就是将每一个内存单元与其他内存单元的引用被计算,以确定它是否被引用,如果没有任何的引用则说明该内存不再使用,可以做回收。

“可达性分析”是一种自动分析可达内存的技术。

当Java程序运行时,垃圾回收器会通过从根对象(如类或线程)到目前可访问对象的跟踪对象,来判断对象和空间之间的关系,以确定哪些对象或空间应该被回收。

3.什么是java的三大特性?1) 跨平台性:Java可以在多种类型的操作系统上运行,例如Windows、Linux、Unix等,只要将Java编译成本机的指令就可以运行,因此Java 可以说是跨平台的;2) 可移植性:Java代码可以在不同平台方便地移植;3) 安全性:Java的安全性涉及Java语言的安全特性和Java的安全体系,Java语言提供了一些访问控制机制,使开发者只能访问具有受保护状态的类和方法,同时Java安全体系还提供了一套安全策略,管控Java小应用和原始Java构件的访问权限。

4.Java数组是如何实现的?Java数组是一种特殊的对象,它允许存储任意类型的对象的集合,他的实现有两种方式:一种是用Java的Array类,每个元素都有一个下标,可以使用get和set方法访问数组元素;另一种是用Java语言自己实现,可以使用数组拷贝、搜索和排序等方法来处理数组。

5.Java泛型的含义是什么?Java泛型是在Java中提供的非常有用的编译时类型安全机制,可以在编译时检查类型安全。

java 原理

java 原理

java 原理
Java是一种面向对象的编程语言,由SUN Microsystems公司(现已
被Oracle Corporation收购)开发。

Java编程语言具有可移植性、高效性、安全性和易学性等特点,因此被广泛应用于Web应用程序、桌面应用
程序和移动应用程序等领域。

Java的工作原理如下:
1. 编写Java代码:Java代码是基于面向对象编程(OOP)的,它通
过类和对象封装数据和行为。

2. 编译Java代码:Java代码经过编译器编译成字节码文件
(.class),字节码是一种中间代码,它可以在任何平台上执行。

3. Java虚拟机(JVM):Java虚拟机是Java平台的核心组件,它是
一个运行字节码文件的虚拟计算机。

JVM负责将字节码文件转换成机器语言,并且管理内存、线程、安全和性能等方面。

4. 执行Java程序:一旦JVM加载了字节码文件,它就会在内存中生
成对象并运行程序。

在运行时,JVM会根据程序的需求来执行相应的操作。

当程序执行完毕或者发生异常的时候,JVM会终止程序的执行。

总之,Java的核心思想是“Write once, run anywhere”(一次编写,到处运行),这意味着Java程序的字节码可以在不同的平台上运行,而不需要重新编译。

这是Java成为流行编程语言之一的重要原因之一。

java程序运行机制

java程序运行机制

java程序运行机制Java是一种面向对象的编程语言,它将程序设计、算法、数据结构和计算机编程封装成对象,使其成为一种更容易使用和开发的计算机编程语言。

Java程序的实现依赖一套复杂的机制,也就是Java 程序运行机制。

下面将介绍Java程序运行机制的基本原理和组成部分,并简要说明各部分的作用。

Java程序运行机制的基本原理是由它的核心部分Java虚拟机(JVM)来实现的。

它的作用是将包含Java代码的.class文件,转换成可在运行时理解的字节码。

JVM负责加载和执行字节码,最后生成最终的计算结果。

Java程序运行机制包括三个基本部分,分别是编译器、类装载器和JVM。

编译器的作用是将包含Java代码的源程序(.java文件)转换成可在计算机上运行的目标程序(.class文件)。

类装载器的作用是负责加载类文件,它可以将类文件加载到JVM中,以便JVM可以将其转换为字节码。

而JVM的作用是负责将字节码转换为机器码,并执行将字节码转换而来的机器码来实现程序的执行,最后生成最终的计算结果。

Java程序运行机制还包括非核心部分类、内存空间和运行时数据区域。

类是Java程序的构成元素,每个类都有自己的特性,包括类变量、成员变量和属性,多个类可以组成一个Java程序。

而内存空间则是JVM在运行程序时所使用的内存,它可以用来存储类、对象和全局变量的信息。

最后,运行时数据区域是程序运行过程中所使用的内存空间,它可以存储堆栈信息,以及操作数据和方法块的状态信息等。

以上就是Java程序运行机制的基本原理和组成部分,以及各部分的作用。

通过对Java程序运行机制的了解,可以让程序开发者更好地理解Java编程语言,从而更加便捷地开发出高质量、高性能的Java程序。

JVM运行机制及其原理

JVM运行机制及其原理

JVM运行机制及其原理JVM(Java Virtual Machine)是Java虚拟机的缩写,是运行Java 字节码的虚拟计算机。

它是Java平台的核心组件,负责在不同的操作系统上执行Java程序。

JVM运行机制主要包括类加载、字节码解释、即时编译、垃圾收集等过程,下面将详细介绍JVM运行机制及其原理。

1.类加载当一个Java程序被运行时,JVM会首先加载程序的主类,然后根据程序的依赖关系逐步加载相关的类。

类加载过程主要分为加载、验证、准备、解析和初始化几个阶段:-加载:通过类加载器将类文件加载到内存中。

- 验证:确保加载的类符合Java语言规范和JVM规范。

-准备:为类的静态变量分配内存并初始化为默认值。

-解析:将符号引用转换为直接引用。

-初始化:执行类的初始化方法。

2.字节码解释加载完类文件后,JVM会通过解释器将字节码文件逐条解释执行,将每条字节码翻译成对应的机器代码并执行。

这种方式简单直接,但效率较低,适用于少量代码和频繁切换的情况。

3.即时编译4.垃圾收集JVM还负责管理程序的内存,包括分配内存、回收无用内存等。

在Java中,内存是通过堆和栈来管理的,堆用于存放对象实例,栈用于存放基本数据类型和方法调用。

JVM通过垃圾收集器来管理堆内存,自动回收不再使用的对象,并将内存释放出来供其他对象使用。

5.类加载器类加载器是JVM的重要组成部分,负责加载class文件,并将其转换成JVM可以识别的数据结构。

JVM中存在多个类加载器,分为三个级别:启动类加载器、扩展类加载器和应用程序类加载器。

类加载器采用双亲委派模型,当需要加载一个类时,先委托给父类加载器加载,只有当父类加载器无法找到类时,才由自己加载。

6.内存模型JVM中的内存分为程序计数器、虚拟机栈、本地方法栈、堆、方法区等几部分。

程序计数器记录当前指令执行的位置;虚拟机栈用于存放局部变量表和操作数栈;本地方法栈用于支持本地方法调用;堆用于存放对象实例;方法区用于存放类信息、静态变量等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java虚拟机一、什么是Java虚拟机Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。

Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。

1.为什么要使用Java虚拟机Java语言的一个非常重要的特点就是与平台的无关性。

而使用Java虚拟机是实现这一特点的关键。

一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。

而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。

Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。

2.谁需要了解Java虚拟机Java虚拟机是Java语言底层实现的基础,对Java语言感兴趣的人都应对Java虚拟机有个大概的了解。

这有助于理解Java语言的一些性质,也有助于使用Java语言。

对于要在特定平台上实现Java虚拟机的软件人员,Java语言的编译器作者以及要用硬件芯片实现Java虚拟机的人来说,则必须深刻理解Java 虚拟机的规范。

另外,如果你想扩展Java语言,或是把其它语言编译成Java语言的字节码,你也需要深入地了解Java虚拟机。

3.Java虚拟机支持的数据类型Java虚拟机支持Java语言的基本数据类型如下:byte://1字节有符号整数的补码short://2字节有符号整数的补码int://4字节有符号整数的补码long://8字节有符号整数的补码float://4字节IEEE754单精度浮点数double://8字节IEEE754双精度浮点数char://2字节无符号Unicode字符几乎所有的Java类型检查都是在编译时完成的。

上面列出的原始数据类型的数据在Java执行时不需要用硬件标记。

*作这些原始数据类型数据的字节码(指令)本身就已经指出了*作数的数据类型,例如iadd、ladd、fadd和dadd指令都是把两个数相加,其*作数类型别是int、long、 float和double。

虚拟机没有给boolean(布尔)类型设置单独的指令。

boolean型的数据是由integer指令,包括integer 返回来处理的。

boolean型的数组则是用byte数组来处理的。

虚拟机使用IEEE754格式的浮点数。

不支持IEEE格式的较旧的计算机,在运行 Java数值计算程序时,可能会非常慢。

虚拟机支持的其它数据类型包括:object//对一个Javaobject(对象)的4字节引用returnAddress//4字节,用于jsr/ret/jsr-w/ret-w指令注:Java数组被当作object处理。

虚拟机的规范对于object内部的结构没有任何特殊的要求。

在Sun公司的实现中,对object的引用是一个句柄,其中包含一对指针:一个指针指向该object的方法表,另一个指向该object的数据。

用Java虚拟机的字节码表示的程序应该遵守类型规定。

Java虚拟机的实现应拒绝执行违反了类型规定的字节码程序。

Java虚拟机由于字节码定义的限制似乎只能运行于32位地址空间的机器上。

但是可以创建一个Java虚拟机,它自动地把字节码转换成64位的形式。

从Java虚拟机支持的数据类型可以看出,Java对数据类型的内部格式进行了严格规定,这样使得各种Java虚拟机的实现对数据的解释是相同的,从而保证了Java的与平台无关性和可移植性。

二、Java虚拟机体系结构Java虚拟机由五个部分组成:一组指令集、一组寄存器、一个栈、一个无用单元收集堆(Garbage-collected-heap)、一个方法区域。

这五部分是Java虚拟机的逻辑成份,不依赖任何实现技术或组织方式,但它们的功能必须在真实机器上以某种方式实现。

1.Java指令集Java虚拟机支持大约248个字节码。

每个字节码执行一种基本的CPU运算,例如,把一个整数加到寄存器,子程序转移等。

Java指令集相当于Java程序的汇编语言。

Java指令集中的指令包含一个单字节的*作符,用于指定要执行的*作,还有0个或多个*作数,提供*作所需的参数或数据。

许多指令没有*作数,仅由一个单字节的*作符构成。

虚拟机的内层循环的执行过程如下:do{取一个*作符字节;根据*作符的值执行一个动作;}while(程序未结束)由于指令系统的简单性,使得虚拟机执行的过程十分简单,从而有利于提高执行的效率。

指令中*作数的数量和大小是由*作符决定的。

如果*作数比一个字节大,那么它存储的顺序是高位字节优先。

例如,一个16位的参数存放时占用两个字节,其值为:第一个字节*256+第二个字节字节码指令流一般只是字节对齐的。

指令tableswitch和lookup是例外,在这两条指令内部要求强制的4字节边界对齐。

2.寄存器Java虚拟机的寄存器用于保存机器的运行状态,与微处理器中的某些专用寄存器类似。

Java虚拟机的寄存器有四种:pc:Java程序计数器。

optop:指向*作数栈顶端的指针。

frame:指向当前执行方法的执行环境的指针。

vars:指向当前执行方法的局部变量区第一个变量的指针。

Java虚拟机Java虚拟机是栈式的,它不定义或使用寄存器来传递或接受参数,其目的是为了保证指令集的简洁性和实现时的高效性(特别是对于寄存器数目不多的处理器)。

所有寄存器都是32位的。

3.栈Java虚拟机的栈有三个区域:局部变量区、运行环境区、*作数区。

(1)局部变量区每个Java方法使用一个固定大小的局部变量集。

它们按照与vars寄存器的字偏移量来寻址。

局部变量都是32位的。

长整数和双精度浮点数占据了两个局部变量的空间,却按照第一个局部变量的索引来寻址。

(例如,一个具有索引n的局部变量,如果是一个双精度浮点数,那么它实际占据了索引n和n+1所代表的存储空间。

)虚拟机规范并不要求在局部变量中的64位的值是64位对齐的。

虚拟机提供了把局部变量中的值装载到*作数栈的指令, 也提供了把*作数栈中的值写入局部变量的指令。

(2)运行环境区在运行环境中包含的信息用于动态链接,正常的方法返回以及异常传播。

·动态链接运行环境包括对指向当前类和当前方法的解释器符号表的指针,用于支持方法代码的动态链接。

方法的class文件代码在引用要调用的方法和要访问的变量时使用符号。

动态链接把符号形式的方法调用翻译成实际方法调用,装载必要的类以解释还没有定义的符号,并把变量访问翻译成与这些变量运行时的存储结构相应的偏移地址。

动态链接方法和变量使得方法中使用的其它类的变化不会影响到本程序的代码。

·正常的方法返回如果当前方法正常地结束了,在执行了一条具有正确类型的返回指令时,调用的方法会得到一个返回值。

执行环境在正常返回的情况下用于恢复调用者的寄存器,并把调用者的程序计数器增加一个恰当的数值,以跳过已执行过的方法调用指令,然后在调用者的执行环境中继续执行下去。

·异常和错误传播异常情况在Java中被称作Error(错误)或Exception(异常),是Throwable类的子类,在程序中的原因是:①动态链接错,如无法找到所需的class文件。

②运行时错,如对一个空指针的引用·程序使用了throw语句。

当异常发生时,Java虚拟机采取如下措施:·检查与当前方法相联系的catch子句表。

每个catch子句包含其有效指令范围,能够处理的异常类型,以及处理异常的代码块地址。

·与异常相匹配的catch子句应该符合下面的条件:造成异常的指令在其指令范围之内,发生的异常类型是其能处理的异常类型的子类型。

如果找到了匹配的catch子句,那么系统转移到指定的异常处理块处执行;如果没有找到异常处理块,重复寻找匹配的catch子句的过程,直到当前方法的所有嵌套的catch子句都被检查过。

·由于虚拟机从第一个匹配的catch子句处继续执行,所以catch子句表中的顺序是很重要的。

因为Java代码是结构化的,因此总可以把某个方法的所有的异常处理器都按序排列到一个表中,对任意可能的程序计数器的值,都可以用线性的顺序找到合适的异常处理块,以处理在该程序计数器值下发生的异常情况。

·如果找不到匹配的catch子句,那么当前方法得到一个"未截获异常"的结果并返回到当前方法的调用者,好像异常刚刚在其调用者中发生一样。

如果在调用者中仍然没有找到相应的异常处理块,那么这种错误传播将被继续下去。

如果错误被传播到最顶层,那么系统将调用一个缺省的异常处理块。

(3)*作数栈区机器指令只从*作数栈中取*作数,对它们进行*作,并把结果返回到栈中。

选择栈结构的原因是:在只有少量寄存器或非通用寄存器的机器(如Intel486)上,也能够高效地模拟虚拟机的行为。

*作数栈是32位的。

它用于给方法传递参数,并从方法接收结果,也用于支持*作的参数,并保存*作的结果。

例如,iadd指令将两个整数相加。

相加的两个整数应该是*作数栈顶的两个字。

这两个字是由先前的指令压进堆栈的。

这两个整数将从堆栈弹出、相加,并把结果压回到*作数栈中。

每个原始数据类型都有专门的指令对它们进行必须的*作。

每个*作数在栈中需要一个存储位置,除了long和double型,它们需要两个位置。

* 作数只能被适用于其类型的*作符所*作。

例如,压入两个int 类型的数,如果把它们当作是一个long类型的数则是非法的。

在Sun的虚拟机实现中,这个限制由字节码验证器强制实行。

但是,有少数*作(*作符dupe和swap),用于对运行时数据区进行*作时是不考虑类型的。

4.无用单元收集堆Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。

Java语言具有无用单元收集能力:它不给程序员显式释放对象的能力。

Java不规定具体使用的无用单元收集算法,可以根据系统的需求使用各种各样的算法。

5.方法区方法区与传统语言中的编译后代码或是Unix进程中的正文段类似。

它保存方法代码(编译后的java 代码)和符号表。

在当前的Java实现中,方法代码不包括在无用单元收集堆中,但计划在将来的版本中实现。

每个类文件包含了一个Java类或一个Java界面的编译后的代码。

可以说类文件是Java 语言的执行代码文件。

为了保证类文件的平台无关性,Java虚拟机规范中对类文件的格式也作了详细的说明。

其具体细节请参考Sun公司的Java虚拟机规范。

相关文档
最新文档