0

There is a java process running on a kubernetes cluster. Jvm start with -Xms512M -Xmx5G. Pod requestMemory: 8Gi, limitMemory: 8Gi. I assume that pod should use nearly 6Gi memory but it reaches 8Gi at the end of day.

I get Heap Dump. it seems Java process use 2.2G memory

I check linux memory management parameters;

/app $ cat /proc/1/statm
6377902 2038023 4219 1 0 6359703 0

/app $ cat /proc/1/status | grep Vm
VmPeak: 25591688 kB
VmSize: 25511608 kB
VmLck:         0 kB
VmPin:         0 kB
VmHWM:   8185536 kB
VmRSS:   8152500 kB
VmData: 25438672 kB
VmStk:       140 kB
VmExe:         4 kB
VmLib:     20648 kB
VmPTE:     17192 kB
VmSwap:        0 kB

/app $ getconf PAGE_SIZE
4096

2038023 * 4K = 8152092 ~ 8.1G memory usage

java process parameters;

java -Xms512M -Xmx5G -Xss256k -XX:SurvivorRatio=8 -XX:NewRatio=6 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -Dio.netty.maxDirectMemory=0 -Dio.netty.noPreferDirect=true -Dio.netty.allocator.type=pooled -Duser.language=en -Duser.country=US -Dserver.port=9102 -jar adapter.jar

if Java process can use Max 5Gi memory, who use 3Gi memory and why

  • You might want to refer https://stackoverflow.com/questions/48798024/java-consumes-memory-more-than-xmx-argument – Lukman Jun 07 '23 at 14:50

0 Answers0