💡 Note: These values combine both heap and non-heap memory areas for a complete JVM memory overview.
🎯 Note: Heap values directly correspond to your JVM -Xmx setting. This is where your application objects live.
🔧 Note: Non-heap includes Metaspace (class metadata), CodeCache (compiled code), and other JVM internal structures.
Detailed CPU metrics and performance insights are on the way!
What it is: Amount of heap memory currently in use by the JVM.
Why it matters: Indicates how much of the available memory is consumed by application objects.
⚠️ Alert: If constantly > 80% of max, may indicate memory leak or need for more memory.
✅ Ideal: Between 40-70% of heap max during normal operation.
What it is: Maximum amount of heap memory the JVM can use (defined by -Xmx).
Why it matters: Defines the upper limit for object allocation.
⚠️ Alert: If too low, may cause OutOfMemoryError. If too high, may impact GC.
✅ Ideal: Configure based on application profile and available resources.
What it is: Memory used outside the heap (Metaspace, Code Cache, etc.).
Why it matters: Includes compiled bytecode, class metadata, etc.
⚠️ Alert: Constant growth may indicate excessive class loading.
✅ Ideal: Stable after application warmup.
What it is: System CPU usage percentage.
Why it matters: Indicates overall computational load of the system.
⚠️ Alert: Constantly > 80% may indicate CPU bottleneck.
✅ Ideal: < 70% in normal operation, allowing occasional spikes.
What it is: Number of active threads in the JVM.
Why it matters: Too many threads can impact performance and consume memory.
⚠️ Alert: Uncontrolled growth may indicate thread leaks.
✅ Ideal: Stable number, proportional to workload.
What it is: Total memory allocated and subsequently collected by GC.
Why it matters: Indicates allocation activity and GC pressure.
⚠️ Alert: Rapid growth may indicate high allocation rate.
✅ Ideal: Linear and predictable growth.
StringBuilder
for concatenation in loops