2010-12-09 36 views
5

Lorsqu'il est exécuté en mode jvm le bavard, il affiche les fichiers sont chargement de fichier objet partagé, comme indiqué ci-dessousQu'est-ce qu'un fichier d'objets partagés?

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

Qu'est-ce que ce objets fichiers partagés? Je pensais que ce sont des fichiers dans rt.jar et ça se charge à partir de là; mais rt.jar devient ouvert en chemin vers le bas

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

aucune façon après l'extraction du rt.jar je l'ai trouvé a toutes les classes qui ont été chargés à partir du fichier objet partagé.

Répondre

5

Ceci est un partage de données de classe. Lors de l'exécution du HotSpot Sun/Oracle Client et de l'activation du partage (-Xshare:auto par défaut ou -Xshare:on), le fichier classes.jsa est mappé en mémoire. Ce fichier contient un certain nombre de classes (répertoriées dans le fichier classlist) en représentation interne adaptées à la configuration exacte de la machine qui l'exécute. L'idée est que les classes peuvent être chargées rapidement, ce qui accélère la mise en place de la JVM. Assez rapidement, une classe non couverte sera atteinte, et rt.jar devra être ouvert et les classes chargées de manière conventionnelle selon les besoins.

Référence:

+0

Cette réponse peut être nécessaire de citer quelques sources .... – Pacerier

+0

@Pacerier Ne hésitez pas à ajouter des citations. –