Apache Tomcat

JVM Heap Memory Pressure Leading to GC Thrashing

critical
Resource ContentionUpdated Apr 29, 2025

When JVM heap usage exceeds 85-90%, frequent garbage collections occur, consuming CPU and causing request processing delays. This creates a feedback loop where GC pauses prevent request completion, further increasing heap pressure.

How to detect:

Monitor when heap memory usage from apache_cpu_load correlates with increased GC frequency and duration. Watch for apache_cpu_time spikes coinciding with memory pressure. Alert when heap consistently exceeds 85% of maximum.

Recommended action:

Tune JVM heap size using -Xms and -Xmx parameters (set equal to avoid resizing). Analyze heap dumps to identify memory leaks. Review GC logs to select appropriate garbage collector. Use Manager App's 'Find Leaks' feature to detect application memory leaks.