- Running the profiler
- Profiler activation
- Running applications with the profiler
- Connect to profiled application
- Troubleshoot connection problems
- Solving performance problems
- Performance bottlenecks
- Optimizing memory usage
- Memory leaks
- Excessive garbage allocation
- Out of memory error (OutOfMemoryError and -XX:+HeapDumpOnOutOfMemoryError)
- CPU profiling
- 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)
- Snapshot directory customization
- Export of profiling results to HTML, CSV, XML, plain text
- Profiler API
- Command line tool to control profiling
- FAQ: How to profile in my scenario?
Solving performance problems
What performance problems may arise?
- Application algorithms are usually not optimal, which leads to performance bottlenecks.
- For memory-related issues see below.
Why memory-related issues can cause performance problems?
Memory-related issues can affect an application's execution speed and stability:
When Java Virtual Machine cannot allocate an object (because it is out
of memory, and no more memory can be freed by the garbage collector),
OutOfMemoryErroris thrown, which can cause an application crash or further unstable operation.
- An application that uses a lot of memory reduces available physical memory for itself and other programs, and thus forces the operating system to swap memory pages to and from the disk more frequently. This leads to serious overall system performance degradation.
- Java Virtual Machine spends more time to perform garbage collection when more objects exist and more temporary objects are created.
Read more about memory-related problems: