JOL object header information

serkan özal serkanozal86 at hotmail.com
Mon Dec 15 15:02:10 UTC 2014


Hi Aleksey,
So +1 from my side for
1. Try to find SA jar in the classpath. (User may provide the sa-jdi.jar)    1.1. If couldn't be found, look at $JAVA_HOME/lib/sa-jdi.jar (as you offered)        1.1.1. If SA jar is available at there, use it        1.1.2. Throw exception, or display a warning message that some features of JOL is not supported because of non-existing SA library. Or use compisite sa-jdi.jar via JVM version aware classloader by printing a log message about because of minor version changes, somethings may be broken.    1.2. Use SA from classpath.2. Create a new process to attach current process with SA. (If current processes attaches itself as Instrumentation agent, current process hangs forever, because when SA agent is attached to a JVM process, JVM suspends attached process)3. Get data from current process with newly created process.4. Return result to current process (caller process) via pipe between processes (Input/Output Stream)
WDYT ?
Regards.

> Date: Mon, 15 Dec 2014 17:28:41 +0300
> From: aleksey.shipilev at oracle.com
> To: serkanozal86 at hotmail.com; jol-dev at openjdk.java.net
> Subject: Re: JOL object header information
> 
> Hi Serkan,
> 
> On 15.12.2014 17:17, serkan özal wrote:
> > As you said SA is specific to its shipped JVM version.
> > So I create a composite "sa-jdi.jar" that containts all sa-jdi jar files
> > fro Java 6, 7 and 8 in different sub directories. Then I use them with a
> > JVM version aware custom classloader as here:
> 
> IDK what license those files are, and therefore I haven't looked there,
> but I dig what you do.
> 
> > WDYT about this solution/workaround ?
> 
> I think that's the right route for at least compressed oops stuff.
> 
> Parsing object header would probably require running the actual SA code,
> because the changing object header format will probably require modified
> parsing code.
> 
> > I didn't send a patch for this stuff to JOL, since I am still not sure
> > about is this approach is right or not ?
> 
> I do think that we need to ask the user to provide us with the concrete
> sa-jdi.jar, load it, and either pull the constants from there, or even
> run the SA code from there. We may even look around in $JAVA_HOME for
> sa-jdi.jar.
> 
> Shipping sa-jdi.jar for "major" versions defies the purpose of having SA
> to begin with: provide the interface to *current* VM, knowing SA is
> synced up with all the mundane details of current VM code. It is wishful
> thinking (and a maintenance nightmare) to presume the internal layout
> would change only in major versions.
> 
> Thanks,
> -Aleksey.
> 
 		 	   		  


More information about the jol-dev mailing list