什么是共享对象文件?

时间:2010-12-09 01:03:45

标签: jvm java

在详细模式下运行jvm时,它显示正在从共享对象文件加载文件,如下所示

[Loaded java.lang.Object from shared objects file]
[Loaded java.io.Serializable from shared objects file]
[Loaded java.lang.Comparable from shared objects file]
[Loaded java.lang.CharSequence from shared objects file]

这是什么共享对象文件?我以为这些是rt.jar中的文件,它从那里开始加载;但是rt.jar在很长一段时间内被打开了

[Loaded java.security.BasicPermissionCollection from shared objects file]
[Opened C:\Program Files\Java\jre6\lib\rt.jar]
[Loaded sun.misc.JavaSecurityProtectionDomainAccess from C:\Program Files\Java\jre6\lib\rt.jar]
[Loaded java.security.ProtectionDomain$2 from C:\Program Files\Java\jre6\lib\rt.jar]

提取rt.jar之后的任何方式我发现它有从共享对象文件加载的所有类。

1 个答案:

答案 0 :(得分:5)

这是类数据共享。运行Sun / Oracle客户端HotSpot并共享启用(-Xshare:auto是默认值或-Xshare:on)时,classes.jsa文件是内存映射的。此文件包含许多类(在classlist文件中列出)的内部表示形式,适用于运行它的计算机的确切配置。这个想法是可以快速加载类,使JVM更快。很快就会有一个未被覆盖的类,并且需要打开rt.jar并按需要按常规方式加载类。

参考: