Java Virtual Machine Specification - Chapter 5. Loading, Linking, and Initializing - 5.3. Creation and Loading - 5.3.4. Loading Constraints介绍了 Loading Constraints 。
假设有如下代码:
class Cat {
public static void main(String[] args) {
System.out.println(Mouse.ct);
}
}
class Mouse {
public static final CustomType ct = new CustomType();
}
class CustomType {}
Cat
使用了Mouse.ct
,所以它的常量池会包含指向CustomType
的一个 symbolic reference 。Mouse
定义了public static final CustomType ct
,所以它的常量池也会包含指向CustomType
的一个 symbolic reference 。
我理解的 Loading Constraints 是:如果 class loader L1 发起对Cat
的加载,class loader L2
发起对Mouse
的加载。关于两者常量池中都包含的指向CustomType
的 symbolic reference,最后要保证 L1 和 L2 所获得的 java.lang.Class instance 是同一个,而且 java.lang.Class instance 所关联的 method area 中的类型信息也是同一个。
请问我的理解正确吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.