Tomcat server's JVM free memory not returned t

2020-07-24 04:52发布

问题:

My tomcat server is behaving strange, it has allocated 6GB of memory from system, but more than 4GB is marked as "free".

This is a screen from tomcat server status:

I understand what "Free memory" in JVM means, but I do not understand why it is not returning lets say in this situation at least 3GB back to system.

Env:

  • Java 8
  • Tomcat 8
  • Debian 8.3
  • Total memory on machine: 64 GB

回答1:

Since you haven't overridden any JVM options, Tomcat uses the default garbage collector which is ParallelGC in JDK 8.

ParallelGC does not uncommit heap memory. Try -XX:+UseG1GC option. G1 garbage collector is capable of releasing memory back to the OS.

See this article for more information.