DestroyJavaVM
可以从启动器调用此方法来卸载 ,当发生非常严重的错误时,也可以由
本身调用。
卸载 需要执行以下步骤:
&0 等到执行完最后一个 线程,注意: 仍然可以运行。
20 调 用 -0%0/0/FG , 它 将 调 用 /
),如果 HB,,则运行 HB。
30 调用 C'4,(),准备 退出,运行 /)(它
们 是 通 过 4>*, ( ) 被 注 册 的 ) , 停 止 7H ,
,. 和 D线程。将状态事件发布到 8I7,禁用 7,并停
止信号线程。
90 调 用 8JJ, ( ) , 释 放 C) , 删 除 栈 %
%,并从线程列表中删除该线程。从现在开始,我们无法执行任何 代
码。
:0 停止 线程,它会将剩余的 带到安全点并停止编译器线程。在安全点,
我们应该注意不要使用任何可能被 ' 阻止的东西。
;0 禁用 II7C 的跟踪。
<0 为仍在运行本机代码FG的线程设置44, 标志。
=0 删除此线程。
@0 调用 ,4%C(),删除 > 和 7'A资源。
&?0 返回到调用者。
VM 类加载
支 持 语 言 规 范 , 第 三 版 K&L , 虚 拟 机 规 范
(),第二版K2L定义的类加载,并根据已更新的 第 : 章加载,链接和初
始化K3L做了修改。
负责解析常量池符号,这需要加载,链接然后初始化类和接口。我们使用术
语“类加载”来描述将类或接口名称映射到类对象的整个过程,以及在由 定义的
类加载阶段使用术语:加载,链接和初始化。
最常见的类加载是在字节码解析期间,类文件中的常量池符号需要解析时。诸如
0'FG,0FG,反射 17 和 4E 之类
的 17可以启动类加载。 本身可以启动类加载。在 启动时加载核
心类,如 -0%0>C-,-0%08 等。加载类需要加载所有父类和父
接口。类文件验证是链接阶段的一部分,可能需要加载其他类。
和 * 类加载库共同负责类加载。 为类和接口执行常量池解析、链
接和初始化。加载阶段需要 与特定类加载器(-0%0)协同工
作。
类装载阶段
4