- Loading...
...
| No Format | ||
|---|---|---|
| ||
$ JDK7=my/copy/of/jre1.7.0
$ cp -p hsdis/.libs/hsdis.so $JDK7/lib/i386/client/libhsdis-i386.so
$ cp -p hsdis/.libs/hsdis.so $JDK7/lib/i386/server/libhsdis-i386.so
$ XJAVA="$JDK7/bin/java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly"
$ $XJAVA -Xcomp -cp ~/Classes hello
$ $XJAVA -Xcomp -cp ~/Classes -XX:PrintAssemblyOptions=hsdis-print-bytes hello
$ $XJAVA -XX:-PrintAssembly -XX:+PrintStubCode
$ $XJAVA -XX:-PrintAssembly -XX:+PrintInterpreter
$ $XJAVA -XX:-PrintAssembly -XX:+PrintSignatureHandlers
$ $XJAVA -Xbatch -cp ~/Classes -XX:+PrintCompilation myloopingbenchmark
|
The last line (with myloopingbenchmark) is most typical, since it uses the batch execution mode common with benchmarks. The -XX:+PrintCompilation flag will let you know which (if any) methods are being compiled.
The -XX:+PrintAssembly option prints everything. If that's too much, drop it and use one of the following options.
Individual methods may be printed:
CompileCommand=print,*MyClass.myMethod prints assembly for just one methodCompileCommand=option,*MyClass.myMethod,PrintOptoAssembly (debug build only) produces the old print command outputCompileCommand=option,*MyClass.myMethod,PrintNMethods produces method dumpsThese options accumulate.
If you get no output, use -XX:+PrintCompilation to verify that your method is getting compiled at all.
...