Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what is shared objects file?

Tags:

java

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]

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]

any way after extracting the rt.jar i found it has all the classes which were loaded from shared object file.

like image 896
asela38 Avatar asked Dec 09 '10 01:12

asela38


People also ask

What is shared object file in Linux?

Shared libraries in Linux are referred as shared objects (generally with extension *. so). These are similar to DLLs in Windows platform. Even shared object files follow the ELF binary format.

What is a shared object file Python?

Shared objects are ranges and specific instances of certain immutable types that CPython instantiates and loads in memory every time a Python interactive session is initialized. These objects are static global variables that can be accessed by all programs executed in a given Python session.

What is in an object file?

An object file is a computer file containing object code, that is, machine code output of an assembler or compiler. The object code is usually relocatable, and not usually directly executable. There are various formats for object files, and the same machine code can be packaged in different object file formats.

How do .so files work?

A file with the . SO file extension is a Shared Library file. They contain information that can be used by one or more programs to offload resources so that the application(s) calling the SO file doesn't have to actually provide the file.


1 Answers

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.

Reference:

  • http://docs.oracle.com/javase/7/docs/technotes/guides/vm/class-data-sharing.html
like image 154
Tom Hawtin - tackline Avatar answered Sep 26 '22 16:09

Tom Hawtin - tackline