1、Java虚拟机的执行引擎都是一致的:输入的字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。
2、栈帧
(1)每个方法从调用开始到执行完成的过程,就对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。
(2)方法返回地址:只要本方法的异常表中没有搜索到匹配的异常处理器,那么将不会给它的上层调用者产生任何返回值。
3、方法调用
一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(即直接引用),在类加载期间甚至到运行期间才能确定目标方法的直接引用。
(1)解析
类加载的解析阶段,将其中一部分符号引用转化为直接引用。即调用目标在编译器进行编译时就必须确定下来,这类方法的调用称为解析。主要包括静态方法和私有方法(还包括实例构造器、父类方法、final方法),因为它们不可能通过继承或别的方式重写出其他版本。
(2)分派
动态分派:运行期根据变量的实际类型确定方法执行版本的分派过程。
Java重写的本质:第一次在运行期确定接收者的实际类型,然后把常量池中的类方法符号引用解析到不同的直接引用上。
4、Java编译器输出的指令流,基本上是一种基于栈的指令集架构。相比基于寄存器的指令集,其优点在于可移植性,缺点在于执行速度相对较慢。
相关推荐
《深入理解Java虚拟机》是Java开发者必读的经典之作,其中第三章主要探讨了Java安全方面的内容。在Java中,安全是一个至关重要的概念,因为Java的设计目标之一就是提供一种可以在不同环境中安全运行的代码机制。本章...
### 学习深入理解Java虚拟机的前几章笔记 #### JVM内存模型 Java虚拟机(JVM)的内存模型主要分为两大类:线程共享区和线程私有区。 ##### 线程共享区 - **堆**:是所有线程共享的内存区域,在这里存放着对象实例...
程序计数器是 JVM 的一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,每条线程都需要有一个独立的程序计数器,各条线程之间程序计数器互不影响,独立存储,是线程隔离的。 本地方法栈的作用...
深入理解 Java 虚拟机笔记 Java 虚拟机(JVM)是 Java 语言的运行环境,它负责解释和执行 Java 字节码。下面是 Java 虚拟机相关的知识点: 虚拟机内存结构 Java 虚拟机的内存结构主要包括以下几个部分: * 方法...
- **Java虚拟机(JVM)**:JVM是Java体系的核心组件,负责解释执行Java字节码,同时提供了内存管理、异常处理等运行时服务。它确保了Java程序能够在不同的操作系统上一致地运行。 - **类装载器的体系结构**:类装载...
Java 虚拟机(JVM)是 Java 语言的 runtime 环境,负责加载、验证、执行 Java 字节码。以下是 JVM 相关知识点的总结。 1. 运行时数据区域 JVM 的运行时数据区域主要包括: * 堆(Heap):用于存储对象、数组等...
《JVM:深入理解Java虚拟机》是一本深入解析Java虚拟机工作原理和技术细节的经典书籍。这份学习笔记将涵盖JVM的关键概念、架构以及它如何影响Java程序的性能。我们将探讨以下几个方面: 1. **JVM概述** Java虚拟机...
深入理解Java虚拟机,首先我们要明白Java虚拟机(JVM)的核心功能:它负责装载类文件,执行字节码,并管理内存。Java虚拟机的结构复杂且高效,主要由类装载器、执行引擎、内存管理和类库等组件构成。 类装载器是JVM...
JVM 是一个虚拟计算机,能够执行字节码(.class文件),这些字节码是Java源代码经过编译后的中间表示。JVM 作为抽象层,隔离了底层操作系统和Java程序,使得Java具有高度的跨平台能力。 JVM 和操作系统的关系可以...
Java源代码文件(.java)首先被编译成字节码文件(.class),然后在不同平台上由JVM解释执行为相应的机器码。这种机制让Java编写的程序可以跨平台运行,因为JVM为Java程序提供了一个抽象的执行环境,屏蔽了不同操作...
Java虚拟机规范定义了JVM在执行Java程序时必须遵守的行为准则,它包括类文件格式、字节码指令集、执行引擎的行为等。 除了上述提到的基础知识点外,《深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)》这本...
### 深入理解Java虚拟机(JVM)的关键知识点 #### 一、Java与Java虚拟机的关系 Java语言的设计者们为了使Java程序能够跨平台运行,引入了一个概念——Java虚拟机(JVM)。简单来说,Java源代码在编译成`.class`...
### 学习笔记之Java虚拟机详解 #### 运行时数据区域概览 Java虚拟机(JVM)运行时数据区域主要包括以下几部分:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区以及运行时常量池。 1. **程序计数器**: -...
Java虚拟机(JVM)是运行Java字节码的虚拟环境,它位于操作系统之上,硬件之下,提供了一层软件抽象,使得Java程序可以在多种平台上运行而无需重新编译。JVM的核心功能包括内存管理、垃圾收集、安全性和平台独立性。...
《深入理解Java虚拟机》是Java开发者们深入探讨Java运行机制的经典之作,作者周志明以其深入浅出的讲解方式,揭示了Java虚拟机(JVM)的工作原理。本资源包含该书第三版的源码分析及学习笔记,旨在帮助读者更透彻地...
在深入理解JVM之前,我们先要明白什么是字节码:Java源代码经过编译后生成的中间表示,即.class文件,里面包含的就是字节码。这个过程确保了Java的“一次编写,到处运行”特性。 JVM的主要功能包括类加载、内存管理...
字节码的执行需要经过三个步骤,首先由类装载器负责把类文件加载到 Java 虚拟机中,在此过程需要检验该类文件是否符合类文件规范;其次字节码校验器检查该类文件的代码中是否存在着某些非法操作,例如 applet 程序中...
Java虚拟机(JVM)是Java语言的核心组成部分,它是Java程序运行的平台,负责解释和执行字节码。深入理解JVM对于优化Java应用程序性能至关重要。本笔记将从以下几个方面详细介绍JVM: 1. **JVM架构** - 类加载子...
本资源是关于OpenJDK7源码的分析和学习资料,旨在帮助开发者深入理解Java虚拟机的工作原理。 首先,我们来了解一下Java虚拟机的主要组件和功能: 1. **类加载器**:负责加载Java字节码文件(.class),将其转换为...