Kubernetes sees a container's total memory, but a Java process divides that memory into an adjustable Heap and non-heap that must be protected carefully. Changing only the container-level settings can improve scheduling reservations while leaving an oversized JVM memory plan untouched.
Start with the outermost layer. A generic VPA-like approach can adjust Request and link Limit by policy. CloudPilot AI goes inside the JVM, understands Heap, protects non-heap, and then coordinates the outer container settings.
Do not add these two figures: Request is a scheduling reservation; Usage is the process's actual memory consumption.
First, lowering Request releases scheduling reservation. Second, shrinking Heap creates room for actual Usage to fall.
Limit, Request, and Usage use the same original-limit scale. Request changes only the scheduling reservation; Heap adjustment changes projected Usage. The controls constrain selections to a safe range without rewriting another resource value to preserve containment.