<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-text-html" lang="x-western">
      <pre>Please review:
    <a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~acorn/class_stats_010/">http://cr.openjdk.java.net/~acorn/class_stats_010/</a>

Bug: RFE: PrintClassHistogram improvements
    <a class="moz-txt-link-freetext" href="https://jbs.oracle.com/bugs/browse/JDK-6479360">https://jbs.oracle.com/bugs/browse/JDK-6479360</a>

Sponsor: Karen Kinnear

Summary:

A new diagnostic command "jcmd GC.class_stats" is added. The user
can invoke this command to connect to a live JVM and dump a detailed
report of size statistics of all loaded classes (including array
classes and anonymous classes).

    ==========SYNOPSIS===================================
    $ jcmd $PID help GC.class_stats
    Provide statistics about Java class meta data.
    Impact: High: Depends on Java heap size and content.

    Syntax : GC.class_stats [options] [&lt;columns&gt;]

    Arguments:
        columns : [optional] Comma-separated list of all the columns to
                 &nbsp;show. If not specified, the following columns are shown:
                 &nbsp;InstBytes,KlassBytes,CpAll,annotations,MethodCount,Bytecodes,
                  MethodAll,ROAll,RWAll,Total (STRING, no default value)

    Options: (options must be specified using the &lt;key&gt; or &lt;key&gt;=&lt;value&gt; syntax)
        -all : [optional] Show all columns (BOOLEAN, false)
        -csv : [optional] Print in CSV (comma-separated values) format for 
                spreadsheets (BOOLEAN, false)
        -help : [optional] Show meaning of all the columns (BOOLEAN, false)
    ======================================================

By default, the output is human-readable tabulated text format. The
user can also select CSV format (comma-separated values) to be
used with spreadsheets.

A large number of columns are available. By default, a few "summary 
columns" (e.g., size of Klass objects, total read-only data, etc) 
are printed. The user can also manually select the columns.

Please see the attachments in the bug for sample output, as well as
a listing of all the columns and their meanings:

<a class="moz-txt-link-freetext" href="https://jbs.oracle.com/bugs/browse/JDK-6479360?focusedCommentId=13290360&amp;page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13290360">https://jbs.oracle.com/bugs/browse/JDK-6479360?focusedCommentId=13290360&amp;page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13290360</a>



Impact:

If this diagnostic command is not used, there should be no
impact to the JVM's execution, except for

   + libjvm.so footprint increase (about 10KB larger on Linux/x64)
   + one additional virtual method in Klass.

This feature is excluded when INCLUDE_SERVICES=0 (e.g., 
embedded builds).



Tests run:

+ JPRT -- (hotspot only) to verify build-ability

+ Manually ran "jcmd $PID help GC.class_stats" on Linux/x64

+ I intend to add a new testcase once this is committed:
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">  <a class="moz-txt-link-freetext" href="https://jbs.oracle.com/bugs/browse/JDK-8006413">https://jbs.oracle.com/bugs/browse/JDK-8006413</a>
  Add utility classes for writing better multiprocess tests in jtreg

Thanks,
Ioi
</pre>
    </div>
  </body>
</html>