2010-12-09 200 views
5

當運行在詳細模式它顯示文件的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之後的任何方式。

回答

5

這是類數據共享。運行Sun/Oracle Client HotSpot和共享啓用(默認爲-Xshare:auto-Xshare:on)時,classes.jsa文件爲內存映射。該文件包含許多內部表示形式的類(列在classlist文件中),適用於運行它的機器的確切配置。這個想法是,類可以快速加載,使JVM更快。很快就會有一個未被覆蓋的課程將被擊中,rt.jar將需要打開並按需要按常規加載課程。

參考:

+0

這個答案可能需要舉一些來源.... – Pacerier 2014-08-25 02:23:16