RFR: 8079408: Reimplement TraceClassLoading, TraceClassUnloading, and TraceClassLoaderData with Unified Logging.

Ioi Lam ioi.lam at oracle.com
Fri Jan 8 19:40:08 UTC 2016


Hi Max,

Just an overall comment first -- What we should do with -verbose:class?

Of all the logging options, I think -verbose:class is probably the most 
frequently used. I think many existing user scripts would  pass 
-verbose:class as a JVM argument would parse the output. So if we 
completely remove the old output of TraceClassLoading and replace them 
with -Xlog:classload, many existing user scripts would break.

We have 2 choices:

[1] Keep the old behavior of -verbose:class, and add -Xlog:classload as 
an independent/separate output. That was the approach I took with my 
original patch. This is more backwards compatible but also more messy to 
maintain.

[2] Replace TraceClassLoading completely with  -Xlog:classload. This is 
the approach of your new patch.

I am actually leaning towards #2. I think there will be a LOT of logging 
changes in JDK9 anyway (e.g., the GC logs). So the benefit of just 
keeping -verbose:class working the old way is a bit dubious.

Anyway, I just want to raise this point so we can have a discussion 
about it.

=======

I must have sent you an earlier version of the classload logging. I've 
made a few small changes. Please see 
http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/2015-November/016904.html

Please use the changes in these files
http://cr.openjdk.java.net/~iklam/8079408-improve-class-load-log.v2/src/share/vm/classfile/classLoaderData.cpp.sdiff.html
http://cr.openjdk.java.net/~iklam/8079408-improve-class-load-log.v2/src/share/vm/classfile/classLoaderData.hpp.sdiff.html


Feedback on other files:

*src/share/vm/classfile/classLoader.cpp*
"[Opened %s]"  -> "opened: %s"
"[Path %s]"  -> "path: %s"

In general, adding a ":" will make it easier to read (by a human)

Also, keep the old code for TraceClassPaths. This should be fixed later 
when we UL-ize this flag.
  580     if (TraceClassPaths) {
  581       tty->print_cr("[Opened %s]", path);
  582     }

*src/share/vm/code/nmethod.cpp:*
Remove "[]" and "Class unloading: Making nmethod" -> "making nmethod"

*src/share/vm/memory/filemap.cpp*
Instead of adding "if (log_is_enabled(Debug, classload))", just remove 
this condition from the code.

      || (TraceClassLoading && Verbose)

These logs are really a part of TraceClassPaths, and we can UL-ize it in 
a separate patch.

*src/share/vm/oops/klass.cpp*
Remove the [] brackets, and change "Unlinking" -> "unlinking", " %s" -> 
": %s"

*src/share/vm/prims/jvmtiEnv.cpp*
"[Opened %s]" -> "opened: %s"

*src/share/vm/services/classLoadingService.cpp**
*Remove [] brackets

Thanks
- Ioi

On 1/7/16 11:10 PM, Max Ockner wrote:
> Hello,
> Please review this unified logging conversion for several related 
> flags in the class loading system.
>
> Bugs:
> https://bugs.openjdk.java.net/browse/JDK-8079408 (classload, 
> classloaderdata)
> https://bugs.openjdk.java.net/browse/JDK-8142506 (classunload)
>
> Webrev: http://cr.openjdk.java.net/~mockner/classload.01/
>
> Summary:
>
> There are two separate issues here. Originally Ioi and I began working 
> on these fixes in parallel, but eventually it became obvious that the 
> classload and classunload tags needed to be implemented together. This 
> change is a combination of Ioi's change for 8079408 and my change for 
> 8142506.
>
> (1) "-XX:+TraceClassLoading" ==> "-Xlog:classload=info"
> This flag is added to the alias table. More verbose logging exists at 
> level debug (one level of verbosity up from info)
>
> (2) "-XX:+TraceClassUnLoading" ==> "-Xlog:classunload=info"
> This flag is added to the alias table. More verbose logging exists at 
> level trace (converted from uses of WizardMode)
>
> (3) "-XX:+TraceClassLoaderData" ==> "-Xlog:classloaderdata=debug"
>
> The changes to TraceClassLoading and TraceClassUnloading also effected 
> the implementation of "-verbose:class"
>
> Tested with: jtreg runtime, runThese with "-Xlog:classload=trace 
> -Xlog:classunload=trace -Xlog:classloaderdata=trace".
>
> If you have questions about the updates to the classloading log, Ioi 
> can give a better answer than I can.
>
> Thanks,
> Max
>
>
>
>



More information about the hotspot-runtime-dev mailing list