- System requirements
- Profiler architecture
- Running the profiler
- Profiler activation
- Running applications with the profiler
- Connect to profiled application
- Troubleshoot connection problems
- Solving performance problems
- CPU profiling
- Threads
- Deadlock detector
- Memory profiling
- Garbage collection
- Monitor profiling
- Exception profiling
- Probes: monitor events of various kinds
- Performance Charts
- Inspections: automatic recognition of typical problems
- Automatically trigger actions on event
- Summary, snapshot annotation, automatic deobfuscation
- IDE integration
- Time measurement (CPU time, wall time)
- Filters
- Snapshot directory customization
- Export of profiling results to HTML, CSV, XML, plain text
- Profiler Java API
- Profiler HTTP API
- Command line tool to control profiling
- Settings
- FAQ: How to profile in my scenario?
Profiler architecture
YourKit Java Profiler consists of two parts interacting via the network: profiler agent and profiler UI.
Profiler agent
Profiler agent (or simply agent) is a plugin for Java Virtual Machine.
It might be loaded into JVM on startup with help of special command line options
-agentpath
, -agentlib
,
or it might be attached to the running JVM later.
Agent uses operating system APIs, JVMTI and byte code instrumentation to gather the performance data. To communicate with other applications the agent opens TCP/IP socket and listens for commands on it.
Profiler UI
Profiler UI (or simply UI) is a desktop application. UI can connect to profiler agent to change profiling modes and obtains live performance data. UI is able to save performance data to the snapshots for further off-line analyzes.
Networking
The communication between UI and agent is always performed via SSL encrypted TCP/IP connection. We use only standard protocols and technologies, that allows to proxy the traffic through the HTTPS and SOCKS proxies (Apache, Nginx, Squid, etc). UI is also able to build SSH tunnels to securely reach the agents inside closed private networks.
Thanks to standard protocols and public HTTP API, you can interact with the agent via a web browser or via command-line tools like cURL.