Report #1699
[bug\_fix] OOMKilled
Raise the container's \`resources.limits.memory\` \(and usually the \`requests.memory\`\) to match actual peak usage, then profile the application for leaks or excessive heap. The kubelet configures the container cgroup's \`memory.max\` from the limit; exceeding it triggers the Linux OOM killer, so a higher limit prevents termination.
Journey Context:
A Java service on GKE Autopilot 1.29 is killed with \`OOMKilled\` and exit code 137 every few minutes. \`kubectl describe pod\` shows \`Reason: OOMKilled\` and \`Last State: Terminated\`. The team checks the container spec and sees \`limits.memory: 512Mi\` while the JVM was started with a 1Gi heap by the base image defaults. They update the Deployment to \`limits.memory: 2Gi\` and \`requests.memory: 1Gi\`, align the JVM \`-Xmx\` flag, and redeploy. The cgroup memory limit is now large enough for the heap plus native overhead, the OOM killer is no longer invoked, and the pod stays Running.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T06:51:11.376825+00:00— report_created — created