<?xml version="1.0" encoding="UTF-8"?> 
<java version="1.6.0" class="java.beans.XMLDecoder"> 
 <object class="org.opensolaris.chime.DisplayDescription"> 
  <void property="columns"> 
   <array class="org.opensolaris.chime.ColumnDescription" length="2"> 
    <void index="0"> 
     <object class="org.opensolaris.chime.ColumnDescription"> 
      <void property="name"> 
       <string>Method</string> 
      </void> 
      <void property="tupleIndex"> 
       <int>0</int> 
      </void> 
     </object> 
    </void> 
    <void index="1"> 
     <object class="org.opensolaris.chime.ColumnDescription"> 
      <void property="aggregationName"> 
       <string>method_calls</string> 
      </void> 
      <void property="name"> 
       <string>Method Count</string> 
      </void> 
      <void property="plottable"> 
       <boolean>true</boolean> 
      </void> 
     </object> 
    </void> 
   </array> 
  </void> 
  <void property="initialSort"> 
   <array class="org.opensolaris.chime.util.TableSortCriteria" length="1"> 
    <void index="0"> 
     <object class="org.opensolaris.chime.util.TableSortCriteria"> 
      <string>Method Count</string> 
      <boolean>false</boolean> 
     </object> 
    </void> 
   </array> 
  </void> 
  <void property="longDescription"> 
   <string>&lt;html&gt;&lt;p&gt;Displays a count of method calls for the given Java thread. The target JVM must be run with the &lt;font face=&quot;Courier&quot;&gt;-XX:+ExtendedDTraceProbes&lt;/font&gt; option.  You can use the &lt;font face=&quot;Courier&quot;&gt;jinfo&lt;/font&gt; command to view and modify JVM options. This
display uses the new DTrace probes defined in JDK 6, so you need at least
JDK 6 to run this display.&lt;/p&gt;

&lt;p&gt;Use caution, &lt;font color=&quot;red&quot;&gt;enabling these extended probes or using this chime display will slow down your application significantly&lt;/font&gt;.&lt;/p&gt;
&lt;p&gt;This chime display needs the JVM pid and also a Thread ID. The Thead ID is the same as the LWP ID. An easy way to find the LWP ID for the thread of interest is to use the prstat command like this&lt;/p&gt;
&lt;font face=&quot;Courier&quot;&gt;&lt;br/&gt;
prstat -p &lt;i&gt;&amp;lt;JVM pid&amp;gt;&lt;/i&gt; -L
&lt;/font&gt;&lt;br/&gt;
or
&lt;font face=&quot;Courier&quot;&gt;&lt;br/&gt;
prstat -p &lt;i&gt;&amp;lt;JVM pid&amp;gt;&lt;/i&gt; -mL
&lt;/font&gt;
&lt;p&gt;For more information, you can see the reference &amp;ldquo;DTrace Probes in HotSpot VM&amp;rdquo; http://java.sun.com/javase/6/docs/technotes/guides/vm/dtrace.html  and also the article &amp;ldquo;DTrace and Java: Exposing Performance Problems That Once Were Hidden&amp;rdquo; by Jarod Jenson http://www.devx.com/Java/Article/33943&lt;/p&gt;&lt;/html&gt;</string> 
  </void> 
  <void property="macroArgs"> 
   <array class="org.opensolaris.dtracex.MacroArgument" length="1"> 
    <void index="0"> 
     <object class="org.opensolaris.dtracex.MacroArgument"> 
      <string>Thread ID (LWP ID)</string> 
      <string></string> 
      <boolean>false</boolean> 
     </object> 
    </void> 
   </array> 
  </void> 
  <void property="options"> 
   <array class="org.opensolaris.os.dtrace.Option" length="6"> 
    <void index="0"> 
     <object class="org.opensolaris.os.dtrace.Option"> 
      <string>aggsize</string> 
      <string>16m</string> 
     </object> 
    </void> 
    <void index="1"> 
     <object class="org.opensolaris.os.dtrace.Option"> 
      <string>cleanrate</string> 
      <string>100ms</string> 
     </object> 
    </void> 
    <void index="2"> 
     <object class="org.opensolaris.os.dtrace.Option"> 
      <string>dynvarsize</string> 
      <string>512m</string> 
     </object> 
    </void> 
    <void index="3"> 
     <object class="org.opensolaris.os.dtrace.Option"> 
      <string>aggrate</string> 
      <string>1000ms</string> 
     </object> 
    </void> 
    <void index="4"> 
     <object class="org.opensolaris.os.dtrace.Option"> 
      <string>bufpolicy</string> 
      <string>ring</string> 
     </object> 
    </void> 
    <void index="5"> 
     <object class="org.opensolaris.os.dtrace.Option"> 
      <string>zdefs</string> 
      <string>set</string> 
     </object> 
    </void> 
   </array> 
  </void> 
  <void property="programString"> 
   <string>

/* Written by Steven Reynolds */

this char *str_ptr;
this string class_name;
this string method_name;
this string signature;

hotspot$target:::method-entry
/tid == $1/
{
    /* signature */
    this-&gt;str_ptr = (char*) copyin(arg5, arg6+1);
    this-&gt;str_ptr[arg6] = &apos;\0&apos;;
    this-&gt;signature = (string) this-&gt;str_ptr;

    /* method name */
    this-&gt;str_ptr = (char*) copyin(arg3, arg4+1);
    this-&gt;str_ptr[arg4] = &apos;\0&apos;;
    this-&gt;method_name = strjoin((string) this-&gt;str_ptr,this-&gt;signature);

    /* class name */
    this-&gt;str_ptr = (char*) copyin(arg1, arg2+1);
    this-&gt;str_ptr[arg2] = &apos;\0&apos;;
    this-&gt;class_name = strjoin((string) this-&gt;str_ptr,this-&gt;method_name);

    @method_calls[this-&gt;class_name] = count();
    /*trunc(@method_calls,20);*/

    this-&gt;str_ptr = 0;
    this-&gt;class_name = 0;
    this-&gt;method_name = 0;
    this-&gt;signature = 0;
}
</string> 
  </void> 
  <void property="promptMacroArgs"> 
   <boolean>true</boolean> 
  </void> 
  <void property="promptTarget"> 
   <boolean>true</boolean> 
  </void> 
  <void property="size"> 
   <object class="java.awt.Dimension"> 
    <int>506</int> 
    <int>517</int> 
   </object> 
  </void> 
  <void property="title"> 
   <string>Java Thread Method calls</string> 
  </void> 
  <void property="version"> 
   <int>2</int> 
  </void> 
 </object> 
</java> 
