Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

<?xml version='1.0'?>
<instrumenter-config>
     <custom-config> </custom-config>
     <all-calls-to-method> </all-calls-to-method>
     <all-calls-from-method> </all-calls-from-method>
     <calls-from-method-to-method> </calls-from-method-to-method>
     <ignore-config> </ignore-config>
</instrumenter-config>

See “About About custom instrumentation configuration” on page 215.See “About configuration, About all calls to method instrumentation configuration” on page 216. See “About configuration, About all calls from method instrumentation configuration” on page 216.See “About configuration, About calls from method to method instrumentation configuration” on page 216. See “About ignore instrumentation configuration” on page 217.configuration, and About ignore instrumentation configuration.

Anchor
AboutCustomInstrumentationConfiguration
AboutCustomInstrumentationConfiguration
About custom instrumentation configuration

The <custom-config> element has the following structure:

<custom-config>
     <java-classes>
          <java-class> <!-- occurs 0 or more times -->
               <class-name> class-or-interface-name </class-name>
                    <methods>
                         <method> <!-- occurs 0 or more times -->
                         <name> method-name </name>
                         <params> <!-- optional -->
                              <param> <!-- occurs 0 or more times --

...

>parameter-type </param>
                         </params>
                         <capture-param-index> <!-- optional --

...

>capture-parameter </capture-param-index>
                         </method>
                    </methods>
          </java-class>
     </java-classes>
</custom-config>

Anchor
AboutAllCallsToMethod
AboutAllCallsToMethod
About all calls to method instrumentation configuration

The <all-calls-to-method> element has the following structure:

<all-calls-to-method>
     <methods>
          <method> <!-- occurs 0 or more times -->
               <name> method-name </name>
               <params> <!-- optional -->
                    <param> <!-- occurs 0 or more times -->
                    parameter-type </param>
               </params>
          </method>
     </methods>
</all-calls-to-method>

Anchor
AboutAllCallsFromMethodInstrumentation
AboutAllCallsFromMethodInstrumentation
About all calls from method instrumentation configuration

The <all-calls-from-method> element has this structure:

<all-calls-from-method>
     <java-classes>
          <java-class> <!-- occurs 0 or more times -->
               <class-name> class-or-interface-name </class-name>
               <methods>
                    <method> <!-- occurs 0 or more times -->
                    <name> method-name </name>
                    <params> <!-- optional -->
                         <param> <!-- occurs 0 or more times -->
                         parameter-type </param>
                    </params>
                    </method>
               </methods>
          </java-class>
     </java-classes>
</all-calls-from-method>

Anchor
AboutCallsFromMethodToMethod
AboutCallsFromMethodToMethod
About calls from method to method instrumentation configuration

The <calls-from-method-to-method> element has this structure:

<calls-from-method-to-method>
     <invocation-relationship> <!-- occurs 0 or more times -->
          <java-class>
               <class-name> class-or-interface-name </class-name>

<methods>

                    <methods>
                         <method> <!-- occurs 0 or more times -->
                              <name> method-name </name>
                              <params> <!-- optional -->
                                   <param> <!-- occurs 0 or more times -->
                                   parameter-type </param>
                              </params>
                         </method>
               </methods>
          </java-class>
          <invoked-method> <!-- occurs 0 or more times -->
          invoked-method-name </invoked-method>
     </invocation-relationship>
</calls-from-method-to-method>

See About method signature matching.

Anchor
AboutIgnoreInstrumentationConfiguration
AboutIgnoreInstrumentationConfiguration
About ignore instrumentation configuration

Use the <ignore-config> element to configure rules that are used to determine when to prevent instrumentation from being applied to all methods in specifically matched classes or packages, to specifically matched methods, or to specifically matched calls to methods.

The <ignore-config> element has this structure:

<ignore-config>
     <java-classes> <!-- optional -->
          <!-- Purpose and structure described below. -->
     </java-classes>
     <invocation-relationship> <!-- occurs 0 or more times -->
          <!-- Purpose and structure described below. -->
     </invocation-relationship>
     <all-calls-to-method> <!-- optional -->
          <!-- Purpose and structure described below. -->
     </all-calls-to-method>
     </instrumenter-config>

Use the <java-classes> element to prevent instrumentation from being applied to all methods in specifically matched classes or packages or to specifically matched methods. The <java-classes> element has this structure:

<java-classes>
     <java-class> <!-- occurs 0 or more times -->
          <class-name> class-or-interface-name </class-name>
          <methods> <!-- optional -->
               <method> <!-- occurs 0 or more times -->
               <name> method-name </name>
               <params> <!-- optional -->

...

</params>
               </method>
          </methods>
     </java-class>
</java-classes>

See About method signature matching.

For each method to be instrumented, the following rules are used to determine if instrumentation should not be applied to the method:•    If

  • If the method is declared in a class whose name matches the specified class or interface name of a <java-class> element, no instrumentation should be applied to the method.

...

  • If the matched <java-class> includes a <methods> element, the method must also match the specified method name of a <method> element so that no instrumentation is applied to the method.

...

  • If the matched <method> element includes a <params> element, the method must also match the specified signature so that no instrumentation is applied to the method.

Wildcards are permitted in the class or interface name and method name. See About using the wildcard character *.

Use the <invocation-relationship> element to prevent instrumentation from being applied to specifically matched calls to methods from a specifically matched calling method. The <invocation-relationship> element has the following structure:

<invocation-relationship> <!-- occurs 0 or more times -->
     <java-class>
          <class-name> class-or-interface-name </class-name>
          <methods>
               <method> <!-- occurs 0 or more times -->
               <name> method-name </name>
               <params> <!-- optional -->
               </params>

...


               </method>
          </methods>
     </java-class>
     <invoked-method> <!-- occurs 0 or more times -->
     qualified-method-name </invoked-method>
</invocation-relationship>

See About method signature matching.

For each call to a method to be instrumented, the following rules are used to determine if instrumentation should not be applied to the method:•    If

  • If the called method is declared in a class whose name matches the specified class or interface name of a <java-class> element, no instrumentation should be applied to the method.

...

  • If the matched, <java-class> includes a <methods> element, the method must also match the specified method name of a <method> element so that no instrumentation is applied to the method. If the matched <method> element includes a <params> element, the method must also match the specified signature so that no instrumentation is applied to the method.

Use the <all-calls-to-method> element to prevent instrumentation from being applied to specifically matched calls to methods from any calling method. The <all-calls-to-method> element has the following structure:

<all-calls-to-method>
     <methods>
          <method> <!-- occurs 0 or more times -->
               <name> method-name </name>
               <params> <!-- optional -->
               </params>
          </method>
     </methods>
</invocation-relationship>

See About method signature matching.

...

The <params> element configures rules that are used to match method signatures for processing by the instrumenter. The <params> element has the following structure:

<params> <!-- optional -->
     <param> <!-- occurs 0 or more times --> parameter-type </param>
</params>

The parameter type is the same as the abstract type declarator for the parameter type in Java. For example, the parameter-type for a parameter of type java.lang.String is java.lang.String, and the parameter type for a parameter of type int[][] is int[][].

The following primitive parameter types names are recognized:

•    boolean

•    byte

•    char

•    double

•    float

•    int

•    long

•    short

 

  • boolean
  • byte
  • char
  • double
  • float
  • int
  • long
  • short
  • void

 •    void

The <invoked-method> elements in the <calls-from-method-to-method> element are used to match specific method signatures for specific calls from one method to another. All methods that match the signature are instrumented. Wildcard expressions are not supported and return types are not matched. The <invoked-method> format must be expressed using the same primitive types that were discussed for the <param> element.

...

The following table illustrates how the wildcard character can be used.

Table 18-3    Usage 3 Usage of wildcard character *Wildcard    Instrumented elements    Non

WildcardInstrumented elementsNon-instrumented elements
*

...

xmp.server.Main
xmp.task.AbstractTask
xmp.task.AbstractTask$1
xmp.task.util.

...

TaskUtilities   

 
xmp.task.*

...

xmp.task.AbstractTask
xmp.task.AbstractTask$1
xmp.task.util.

...

TaskUtilities

xmp.server.Main
*$*

...

xmp.task.

...

AbstractTask$1xmp.server.Main
xmp.task.AbstractTask
xmp.task.util.TaskUtilities
Info

Use wildcard characters only when discovering the methods to instrument. Otherwise, it may result in instrumentation that does not yield meaningful performance metrics but introduces unwanted overhead. Do not implement wildcarded instrumentation in production environments.

...

To include Leak Seeker instrumentation for application server classes1.    In

  1. In the JVMID/LeakSeeker.xml file, find the application server class prefix for the application server classes that you want to instrument. For example, to identify WebLogic application server classes to instrument, you would search for lines beginning with com.bea and weblogic.

...

  1. Comment out the lines for the application server whose classes you want to instrument. For example, the following lines cause Leak Seeker to collect information for WebLogic application server classes.

<!--leakseeker-if-package>com.bea</leakseeker-if-package>

 

<!--leakseeker-if-package>weblogic</leakseeker-if-package>

...

 

Precise. Performance intelligence from click to storage. Learn more > >

...