Java类加载、连接和初始化过程如何详细解析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3436个文字,预计阅读时间需要14分钟。
系统可能在首次使用某个类时加载该类,也可能采用预加载机制来加载某个类。本节将详细介绍类加载、连接和初始化过程中的每个细节。
系统可能在第一次使用某个类时加载该类,也可能采用预加载机制来加载某个类。本节将会详细介绍类加载、连接和初始化过程中的每个细节。
JVM 和类
当调用 java 命令运行某个 Java 程序时,该命令将会启动一个 Java 虚拟机进程,不管该 Java 程序有多么复杂,该程序启动了多少个线程,它们都处于该 Java 虚拟机进程里。正如前面介绍的,同一个 JVM 的所有线程、所有变量都处于同一个进程里,它们都使用该 JVM 进程的内存区。当系统出现以下几种情况时,JVM 进程将被终止。
- 程序运行到最后正常结束。
- 程序运行到使用 system.exit() 或 Runtime.getRuntime().exit() 代码处结束程序。
- 程序执行过程中遇到未捕获的异常或错误而结束。
- 程序所在平台强制结束了 JVM 进程。
从上面的介绍可以看出,当 Java 程序运行结束时,JVM 进程结束,该进程在内存中的状态将会丢失。下面以类的类变量来说明这个问题。下面程序先定义了一个包含类变量的类。
public class A { // 定义该类的类变量 public static int a = 6; }
上面程序中的粗体字代码定义了一个类变量a,接下来定义一个类创建A类的实例,并访问A对象的类变量a。
本文共计3436个文字,预计阅读时间需要14分钟。
系统可能在首次使用某个类时加载该类,也可能采用预加载机制来加载某个类。本节将详细介绍类加载、连接和初始化过程中的每个细节。
系统可能在第一次使用某个类时加载该类,也可能采用预加载机制来加载某个类。本节将会详细介绍类加载、连接和初始化过程中的每个细节。
JVM 和类
当调用 java 命令运行某个 Java 程序时,该命令将会启动一个 Java 虚拟机进程,不管该 Java 程序有多么复杂,该程序启动了多少个线程,它们都处于该 Java 虚拟机进程里。正如前面介绍的,同一个 JVM 的所有线程、所有变量都处于同一个进程里,它们都使用该 JVM 进程的内存区。当系统出现以下几种情况时,JVM 进程将被终止。
- 程序运行到最后正常结束。
- 程序运行到使用 system.exit() 或 Runtime.getRuntime().exit() 代码处结束程序。
- 程序执行过程中遇到未捕获的异常或错误而结束。
- 程序所在平台强制结束了 JVM 进程。
从上面的介绍可以看出,当 Java 程序运行结束时,JVM 进程结束,该进程在内存中的状态将会丢失。下面以类的类变量来说明这个问题。下面程序先定义了一个包含类变量的类。
public class A { // 定义该类的类变量 public static int a = 6; }
上面程序中的粗体字代码定义了一个类变量a,接下来定义一个类创建A类的实例,并访问A对象的类变量a。

