Broadly useful for performance analysis and for gaining a deeper understanding of a Java* program
Consists of the Profiling and Logging Perspective and a number of graphical and tabular views
Visualize program execution and threading behavior; Pinpoints operations taking most resources; Explore patterns of program behavior
Enables you to test your application's performance early in the programming development cycle for improvements
Option to run application with agent at near full speed (enabled mode) and attach later at certain application phase.
Assorted filtering functionality which can help to localize problem and reduce overhead for large long run applications
Obligatory Eclipse* TPTP Architecture Diagram Presentation System Test Trace EMF Data Models Log Statistical XMI Real Time Export Runtime Monitor / log Trace Analysis And Profiling Test Creation and Execution Artifact Management Eclipse TPTP GUI Standard Widgets and Core Plug-ins Reference Perspectives And Workflow Target System Data Collection Application Data Collection Interface Injection Correlation Execution Environment Log Collection Trace Collection System Performance Monitor JVMPI Monitor Data Loader Distributed Data Collection Framework Eclipse Platform JVMTI Monitor Agent Control Interface Agent Control Interface Distributed Control Framework Testability Interface Test Engine
Pro: Reduce data volume and instrumentation overhead (critical)
Con: Data for excluded classes/method can never be seen
Model Import Filtering
Pro: Reduce workbench memory footprint (critical on 32bit OSes)
Con: Can only see data that is in the model
View Level Filtering
Pro: Remove items from being visualized in the workbench
Con: Does not reduce data volume or model footprint
Harmony performance analysis w/ TPTP: HWA startup. 5% boost expected from moving key signed jar to bootclasspath. Sort by number of calls write(int) is at the top Sort by base time java.util.jar.IninManifest:.read() at the top Callgraph : java.util.jar.InitManifest:.read()->java.io.ByteArrayOutputStream:.write(int) Too much time is spent when reading the manifest of signed jar file... http://issues.apache.org/jira/browse/HARMONY-5277 Demo Demo
4% boost expected by replacing linear search w/ hashed search in lookup Sort by number of calls Java.lang.reflect.Method.getName() is at the top further investigation shows that Method:.getName() is used in linear search for finding methods of class from java.lang.Class.getMethod(String) http://issues.apache.org/jira/browse/HARMONY-5284
A set of libraries that attach to a JVM for recording Java application's behavior
An extensible framework, consisting of a core runtime component (Martini), an agent managed by the Agent Controller (JPIAgent), and a set of data collection libraries built on top of the Martini runtime.
Can be used to identify performance details such as classes or methods responsible for execution bottlenecks, analyze application heap to find memory leaks and visualize threading behavior.
Output in the form of XML fragments (XML4Profiling)
Can be launched from the Eclipse IDE or as a standalone program using Java command-line options
Applications under test can reside in Eclipse workspace, binaries on file system, or hosted in a J2EE application server.