2010-12-09 4 views
5

Wenn der jvm im ausführlichen Modus ausgeführt wird, zeigt er an, dass Dateien von einer freigegebenen Objektdatei geladen werden, wie unten gezeigt.Was ist eine Datei mit gemeinsamen Objekten?

[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] 

Was sind diese Dateien mit gemeinsam genutzten Objekten? Ich dachte, das sind Dateien in rt.jar und es wird von dort geladen; aber rt.jar wird auf lange Weise geöffnet

[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] 

jeder Weg nach dem Extrahieren der rt.jar ich fand es alle Klassen, die von gemeinsamen Objektdatei geladen wurden.

Antwort

5

Dies ist Class Data Sharing. Wenn Sie den Sun/Oracle Client HotSpot und die Freigabefreigabe ausführen (entweder -Xshare:auto, die Standardeinstellung oder -Xshare:on), ist die Datei classes.jsa speicherkonform. Diese Datei enthält eine Reihe von Klassen (die in der Datei classlist aufgelistet sind) in einer internen Darstellung, die für die genaue Konfiguration der Maschine, auf der sie ausgeführt wird, geeignet ist. Die Idee ist, dass die Klassen schnell geladen werden können, um die JVM schneller zu machen. Schon bald wird eine Klasse, die nicht abgedeckt ist, getroffen und muss geöffnet und die Klassen wie erforderlich konventionell geladen werden.

Referenz:

+0

Diese Antwort müssen einige Quellen nennen kann .... – Pacerier

+0

@Pacerier Fühlen Sie sich frei Zitate hinzuzufügen. –

Verwandte Themen