Jvm 什么是共享对象文件?

Jvm 什么是共享对象文件?,jvm,java,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

在详细模式下运行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客户端热点并启用共享(默认为
-Xshare:auto
,或
-Xshare:on
)时,
类.jsa
文件是内存映射的。该文件包含许多内部表示的类(列在
类列表
文件中),适合运行它的机器的精确配置。其思想是可以快速加载类,从而加快JVM的运行速度。很快,一个未被覆盖的类将被命中,
rt.jar
将需要打开,并根据需要按常规加载类

参考:


@Pacerier可以随意添加引用。