- System requirements
- Profiler architecture
- Running the profiler
- Profiler activation
- Start profiling
- IDE integration
- Java server integration wizard
- Attach profiler to a running application
- Remote profiling
- Docker
- Enabling profiling manually
- Startup options
- Connect to profiled application
- Profiling troubleshooting
- Profiling overhead: how to reduce or avoid
- 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
- 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?
Remote profiling
Remote profiling is the case when the profiled application and the profiler UI run on different machines, usually on a server and your developer machine.
To profile Java applications running on the remote machine use Profile remote Java server or application... action on Welcome screen or in "Tools" menu.

Choose application discovery method
-
Direct connect. Profiler discovers applications running on the remote machine with the profiler agent by scanning open ports.
-
SSH access. Profiler uses SSH to log into the remote machine and find all running Java applications.
-
YourKit Connection Broker makes profiling in clouds, containers and clustered environments super easy and convenient.
Which discovery method to choose?
Each discovery method has its advantages, and unfortunately, there is no silver bullet.
Direct connect
- Ideal for development. This is the default method when you start profiling from your IDE.
SSH access
- Ideal for situations when you have SSH access to the host and want to profile Java application which runs without profiler agent.
- No need to configure firewalls and expose ports.
- Automatically uploads profiler agent and all other necessary files to the remote host.
- Ability to profile applications started without the profiler agent using attach.
YourKit Connection Broker
- Ideal for clouds, containers and clustered environments.
- No need to configure firewalls and expose ports.
- No need to have SSH access to remote host.
- No need to know the IP address and port of the profiler agent to connect to it.
- Profiler agents do not open TCP sockets to listen the incoming connections.
- Extra layer of security and fine-grained control for accessing the profiled applications.
Build SSH tunnel
If the remote host is not directly reachable you can build SSH tunnel. To do so, navigate to the SSH Tunnel step and enable SSH tunnel using Use SSH tunnel checkbox.
You can add any number of intermediate hosts, and specify authentication credentials for each of them. Profiler supports password authentication, authentication with private SSH key, and through the SSH agent.

Connect to the remote application
Created connection will appear in the "Monitor Applications" list on Welcome screen under a given name. You can then connect to the application to perform profiling.

If you do not see your application it the list, please read Profiling troubleshooting.