什么是共享对象文件? [英] what is shared objects file?
问题描述
当以详细模式运行jvm时,它显示正在从共享对象文件加载文件,如下所示
When run the jvm in verbose mode it shows files are loading from shared object file as shown below
[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在很长一段时间内被打开
What is this shared objects files? I thought these are files in rt.jar and it's getting loaded from there; but rt.jar is getting opened in long way down
[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之后我发现它有从共享对象文件加载的所有类。
any way after extracting the rt.jar i found it has all the classes which were loaded from shared object file.
推荐答案
这是类数据共享。运行Sun / Oracle客户端HotSpot并共享启用时( -Xshare:auto
这是默认值,或 -Xshare:on
), classes.jsa
文件是内存映射的。此文件包含许多类(在 classlist
文件中列出),内部表示形式适合运行它的机器的确切配置。这个想法是可以快速加载类,使JVM更快。很快就会有一个未被覆盖的类,并且需要打开 rt.jar
并按需要按常规方式加载类。
This is Class Data Sharing. When running the Sun/Oracle Client HotSpot and sharing enable (either -Xshare:auto
which is the default, or -Xshare:on
), the classes.jsa
file is memory mapped. This file contains a number of classes (listed in the classlist
file) in internal representation suitable for the exact configuration of the machine running it. The idea is that the classes can be loaded quickly, getting the the JVM up faster. Soon enough a class not covered will be hit, and rt.jar
will need to be opened and classes loaded conventionally as required.
参考:
- http://docs.oracle.com/javase/7/docs/technotes/guides/vm/class-data-sharing.html
这篇关于什么是共享对象文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!