Что такое файл общих объектов?

При запуске 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 я обнаружил, что в нем есть все классы, которые были загружены из общего объектного файла.

1 ответ

Решение

Это класс обмена данными. При запуске Sun/Oracle Client HotSpot и включении общего доступа (либо -Xshare:auto по умолчанию, или -Xshare:on), classes.jsa файл сопоставлен с памятью. Этот файл содержит ряд классов (перечисленных в classlist файл) во внутреннем представлении подходит для точной конфигурации машины, на которой он работает. Идея состоит в том, что классы могут быть загружены быстро, ускоряя запуск JVM. Вскоре класс, не охваченный, будет поражен, и rt.jar нужно будет открывать и загружать классы по мере необходимости.

Ссылка:

Другие вопросы по тегам