【问题标题】:what is shared objects file?什么是共享对象文件?
【发布时间】:2010-12-09 01:03:45
【问题描述】:

当以详细模式运行 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 后,我发现它包含从共享对象文件加载的所有类。

【问题讨论】:

    标签: jvm java


    【解决方案1】:

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

    参考:

    【讨论】:

    • @Pacerier 随意添加引用。
    猜你喜欢
    • 2020-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多