java -Xmx=256m -Xms=512m -Dname=value com.iss.MainApp
1. 加载JVM,主要是加载动态链接库,windows下jvm.dll,Linux下libjvm.so
2. 设置JVM启动参数,-Xmx=256m -Xms=512m设置堆大小
3. 初始化JVM。
4. 调用类加载器子系统,加载com.iss.MainApp。自定义类,根据类加载器双亲委派链,由系统默认类加载器(Classpath类加载器)进行加载。首先,根据全路径类型转化为文件路径com/iss/MainApp.class,然后读取MainApp.class中的二进制信息、解析、加载,在方法区中形成MainApp类对应的数据结构。这里可能抛出ClassNotFoundException,有两种原因。一是文件路径com/iss/MainApp.class不存在;二是com/iss/MainApp.class文件路径存在,但是MainApp.class文件中存储的不是MainApp类的信息,比如是MainApp1,MainApp2等其他类的信息。这种情况下,会抛出NoClassDefFoundError,然后导致ClassNotFoundException。
5. 在方法区com.iss.MainApp类对应的数据结构中,根据方法描述符及访问标志,查找main方法。这里的描述符,包括了方法的方法名、参数、返回值,也就是public static void main(String[])。如果找不到对应的main方法,会抛出NoSuchMethodError: main异常。
6. 通过本地方法(JNI)执行main方法。
相关推荐
### JVM执行子系统原理 #### 一、类文件结构与字节码指令 **Class类文件结构** Class文件是Java程序编译后产生的文件,它采用了一种类似于C语言结构体的形式来组织数据,其中各个数据项目紧密排列,没有任何额外...
在深入理解JVM执行子系统之前,我们需要了解Java类文件结构,以及JVM如何与这些类文件交互。 ### Java跨平台基础 Java语言之所以能够跨平台运行,是因为它实现了平台无关性。这种无关性是通过Java程序编译后的字节...
JVM执行引擎有三种常见的实现方式:解释型、即时编译型(JIT)以及两者的结合。 栈帧是JVM执行引擎中方法调用和执行的基础数据结构,存在于每个线程的虚拟机栈中。栈帧包含了以下几个主要部分: 1. **局部变量表**...
在JVM执行过程中,执行引擎还会涉及到其他组件,如PC寄存器用于跟踪下一条要执行的字节码指令,局部变量表用于存储方法执行期间的变量,而对象引用则指向堆中的实例信息。元数据指针在对象头中存储,用于定位对象的...
5. **初始化**:最后,JVM执行类的初始化方法(),这包括静态变量的初始化和静态代码块的执行。当且仅当类被首次主动使用时,才会进行初始化。 6. **执行**:一旦主类完成初始化,JVM的执行引擎开始运行main方法。...
#### 四、JVM执行过程中的核心概念 - **程序计数器(Program Counter Register)**:存储当前线程正在执行的字节码的地址。 - **虚拟机栈(Java Virtual Machine Stack)**:每个线程拥有自己的栈,用于存储局部变量...
JVM执行子系统是JVM中的一个重要部分,负责解释和执行Java字节码,确保程序的运行。在面试中,对于Java开发者来说,深入理解JVM执行子系统是必不可少的技能。以下是对JVM执行子系统的详细解析: 1. 类加载器(Class...
本文将深入探讨JVM TI的核心概念、主要功能以及如何使用它来监控Java执行过程。 一、JVM TI概述 JVM TI是Java虚拟机的一部分,它是JDK中的一个本地接口,提供了C/C++的头文件和库,使得开发人员可以通过编写本地...
JAVA程序的执行过程主要分为三个阶段:源代码的编写、编译成字节码、JVM的解释执行。 - **源代码的编写**:开发者使用JAVA语言编写源代码,这些源代码通常以`.java`文件的形式存在。 - **编译成字节码**:编写的源...
总的来说,了解JVM启动过程和工作原理对于Java开发者来说非常重要,它不仅有助于理解Java代码的执行机制,还能帮助优化程序性能,解决运行时的问题。无论是编写Java应用程序,还是进行JVM的优化、调试,甚至是开发新...
JVM执行子系统首先涉及到的是类加载过程,包括加载、验证、准备、解析和初始化五个阶段。这个过程确保了Java代码的安全性和可靠性。类加载器根据双亲委托模型来查找和加载类,防止类的重复加载,并且保证核心类库的...
在JVM执行过程中,经常会涉及到从局部变量表中加载值到操作数栈的操作。这部分指令涵盖了如何从局部变量表中装载各种类型的数据。 - **`iload`, `lload`, `fload`, `dload`, `aload`**:这些指令用于从局部变量表中...
7. 安全管理:JVM执行严格的类型检查和权限控制,确保代码的安全性。 8. 调优工具:如JVisualVM、JConsole等,帮助开发者监控和调整JVM的性能。 了解JVM源码可以帮助我们深入理解Java程序的运行过程,优化内存使用...
包括JVM执行过程、虚拟机类加载机制、运行时数据区、GC、类加载器、内存分配与回收策略等,全套视频加资料高清无密码 第1讲 说在前面的话 免费 00:05:07 第2讲 整个部分要讲的内容说明 免费 00:06:58 第3讲...
从提供的部分内容来看,提到了Java发展历程、JVM列表、OpenJDK、编译执行过程和JIT编译等。Java的发展历程始于1995年,伴随着众多技术的引入和版本的更新,包括AWT、JDBC、JavaBeans、JDK1.1、J2SE、泛型、NIO、JMX...
Java代码执行流程是JVM的核心流程之一,它首先通过编译器把Java代码转换成字节码,然后通过类加载器加载到内存中,并将其放在运行时数据区的方法区内。最后,执行引擎将字节码翻译成底层系统指令,再交由CPU去执行。
JVM 在执行字节码时,会通过一系列机制来确保程序的安全性和高效性。首先,它具备一种名为“类加载器”(Class Loader)的组件,用于加载和管理程序中的类文件。类加载器不仅能够按需加载类文件,还能够支持热更新等...