0%

18.1 类的加载 连接和初始化 18.1.1 JVM和类

18.1 类的加载 连接和初始化

系统可能在第一次使用某个类时加载该类,也可能采用预加载机制来加载某个类。本节将会详细介绍类加载、连接和初始化过程中的每个细节。

18.1.1 JVM和类

当调用java命令运行某个Java程序时,该命令将会启动一个Java虚拟机进程,不管该Java程序有多么复杂,该程序启动了多少个线程,它们都处于该Java虚拟机进程里。正如前面介绍的,同一个JVM的所有线程、所有变量都处于同一个进程里,它们都使用该JVM进程的内存区。

JVM进程终止的情况

  • 当系统出现以下几种情况时,JVM进程将被终止。
  • 程序运行到最后正常结束。
  • 程序运行到使用System.exit()Runtime.getRuntime().exit()代码处结束程序.
  • 程序执行过程中遇到未捕获的异常或错误而结束
  • 程序所在平台强制结束了JVM进程。

从上面的介绍可以看出,当Java程序运行结束时,JVM进程结束,该进程在内存中的状态将会丢失。下面以类的类变量来说明这个问题。下面程序先定义了一个包含类变量的类。
两次运行Java程序处于两个不同的JVM进程中,两个JVM之间并不会共享数据。

原文链接: 18.1 类的加载 连接和初始化 18.1.1 JVM和类