什么是共享对象文件?

在详细模式下运行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之后的任何方式我发现它具有从共享对象文件加载的所有类。

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

参考: