Overview of the Java Profiling tool
Trace-based profiling
Java™ Profiler is a standards based Java profiler tightly integrated into Eclipse development workflow whether you are developing Rich client applications or Web based applications. The Java profiler supports a broad set of Java virtual machines and a comprehensive profiling of your java applications. The Java Profiler is both a tool for profiling and an extensible framework, It consists of the Profiling Perspective and a number of views. It enables you to profile your applications, to work with profiling resources, to interact with the applications you are profiling, and to examine your applications for performance, memory usage and threading problems. The Java Profiler tool provides a comprehensive feature set of profiling functionality and provides an intuitive user interface to analyze the application behavior.
- Memory profiling:
- Keep track of your objects and find out where the problem spots are.
- Find out the origination of your application memory leak.
- CPU profiling:
- Find out where your CPU time is going and locate performance bottlenecks.
- Thread profiling:
- Check the activity of your threads, resolve deadlocks and get detailed information on your application's monitor usage.
- Scale your application by evaluating the threading behavior.
- Pattern extraction:
- The tools give you the ability to concurrently monitor many processes on many machines, thereby profiling a distributed application. Using the Agent Controller, the Profiling Tool has the ability to launch applications on remote machines and to then interactively profile them. This is useful when trying to determine the performance characteristics of your applications when they are running on their deployment target platform.
- Distributed monitoring:
- The tools give you the ability to concurrently monitor many processes on many machines, thereby profiling a distributed application. Using the Agent Controller, the Profiling Tool has the ability to launch applications on remote machines and to then interactively profile them. This is useful when trying to determine the performance characteristics of your applications when they are running on their deployment target platform.
Profiling architecture
The Java Profiling Agent is an agent instance that
is deployed with the Agent Controller. In the deployment diagram below,
the Agent (2) may be a Java Profiling
Agent. The Application Process (1) is the Java Virtual Machine that executes the Java application. Note that the
diagram below applies to the remote agent controller, not the Integrated
Agent Controller.
- Application process (1).
- Agent (2).
- Data collection engine (3)
- Service (4)
- Eclipse plug-ins (5)
- Test client (6)
- JDK (7)
Sample-based profiling using the Health Center Agent
You can use sample-based profiling using the Health Center Agent in your project, which: Health Center Agent is supported on all recent IBM JVMs:
- Provides very low overhead compare with trace-based profiling,
- Is provided by Health Center Agent, in the same way that the IBM Support Assistant is provided,
- Uses the Health Center API which was introduced in Health Center v2.1,
- Is supported on all recent IBM JVMs, including:
- Java 6 SR5
- Java 7 and 8.
- Can be used for profiling execution-time problems:
- You can specify class name filter using a regular expression.
- Is available on all supported profiling launch types, including
profiling on WebSphere Application Server and WebSphere Application
Server Liberty Profile servers:
- Java application
- JUnit
- JUnit Plugin launch
- Applet
- OSGI application
- Eclipse application
- Profile on server
- Is supported on all Rational Agent Controller-supported platforms.