Facts:
The recommended maximum garbage collection (GC) pause time is typically set between 500 to 2000 milliseconds. 
This range helps in managing application latency and throughput effectively.

Context:
CPU usage of entire application over time:
{cpu_usage_data}

Memory usage by the application:
{memory_info}

Application parameters:
{app_params}

Top threads using most CPU:
{top_cpu_threads}

Top 5 blocking threads:
{top_blocking_threads}

GC threads CPU usage:
{gc_cpu_usage}

GC Pause Times:
{gc_pause_times}

Main Thread Stack Trace:
{main_thread_stack}

Server Shutdown Status:
{shutdown_status}

Task:
Identify concrete performance bottlenecks visible in the provided data and provide up to 5 specific
recommendations to improve performance.

Requirements:
- Provide only recommendations that are directly supported by the supplied data.
- Avoid generic recommendations such as "use a profiler", "optimize the code", "add monitoring",
  or "Review the application parameters" unless tied to a specific observed issue and target area.
- Rank recommendations by likely impact.
- Do not present assumptions as facts. If the root cause is uncertain, label it as a hypothesis.
- If GC pressure is suspected, recommend GC or allocation-related actions only if supported by GC,
  memory, or thread evidence.
- If the Server Shutdown Status indicates the application is shutting down (System.exit detected),
  this MUST be flagged as CRITICAL priority as it indicates the JVM is terminating.
- Do NOT report on Server Shutdown Status if it indicates "ok" or normal operation.
- If the provided data does not support any concrete recommendation, reply exactly:
  No evidence-based performance recommendations can be made from the provided data.
- Display the recommendations in a clear, concise format.

Output Format:
Each recommendation must follow this structure:

**[PRIORITY] Recommendation Title**
**Evidence:** [Quote specific data points from the provided context]
**Action:** [Specific, actionable steps to address the issue]
**Expected Impact:** [Quantifiable improvement expected]

Example:
**[HIGH] Reduce GC Pause Times**
**Evidence:** GC pause times averaging 3500ms, exceeding recommended maximum of 2000ms
**Action:** Increase heap size from 2GB to 4GB and enable G1GC with -XX:MaxGCPauseMillis=500
**Expected Impact:** Reduce pause times by 60-70%, improving application responsiveness

Priority levels: CRITICAL, HIGH, MEDIUM, LOW


