Make the following questions:
- CPU hotspots: Identify methods consuming excessive CPU cycles
- Inefficient algorithms: Spot O(n²) operations that should be O(n log n)
- Unnecessary object allocations: Find code creating millions of temporary objects
- String concatenation issues: Detect inefficient string operations in loops
- Memory leaks: Track objects that aren't being garbage collected
- Excessive heap usage: Identify which classes/methods allocate the most memory
- Large object retention: Find objects staying in memory longer than expected
- Off-heap memory issues: Detect native memory leaks in JNI code
- Lock contention: Identify synchronized blocks causing thread blocking
- Thread pool exhaustion: Find threads waiting indefinitely
- Deadlock conditions: Spot circular wait conditions
- Context switching overhead: Detect excessive thread switching
- GC pressure: Identify code causing frequent GC cycles
- Long GC pauses: Find allocation patterns causing stop-the-world events
- Generational GC issues: Spot objects promoted to old generation prematurely
- Blocking I/O operations: Find threads stuck on file/network operations
- Database connection leaks: Identify unclosed connections
- Inefficient serialization: Spot expensive object serialization/deserialization