当我们使用-cp命令调用java命令时,我们提供了一些目录和jar文件.jvm是否加载了类路径提到的所有类或者它只是jvm在需要时会查找的所有类的超集?
Jun*_*san 10
jvm是否加载了类路径提到的所有类或者它只是jvm在需要时会查找的所有类的超集?
JVM根据需要从类路径加载类,即当为类找到引用时,它被加载.JVM中还有类加载器的层次结构,由较低类加载器使用由父类加载器加载的类.
涉及两个概念
初始化一个类将初始化字段并执行静态块。发生这种情况的确切时刻对于应用程序语义很重要,因此它被精确定义。
初始化需要先加载;但加载更多的是 JVM 的内部概念。即使不需要,JVM 也可以并且被允许积极地预加载类。此过程不影响应用程序语义,并且对应用程序不可见。
至于应用程序而言,类必须已如果我们得到一个装Class
的是对象,例如从Foo.class
,Class.forName
或其它反射的API。我们可以检查 的属性Class
而不必触发初始化。
一个重要的约束 - 我们必须Class
为相同的类名(并且来自相同的类加载器)获取相同的对象。该Class
对象是已加载类的表示。
归档时间: |
|
查看次数: |
4600 次 |
最近记录: |