We run many Tomcat servers and have observed full garbage collections (GCs) are often performed on an hourly basis, particularly when memory usage is relatively low. The precise
you should be able to change the interval by
-Dsun.rmi.dgc.client.gcInterval=60000
-Dsun.rmi.dgc.server.gcInterval=60000
take a look here https://docs.oracle.com/cd/E19199-01/817-2180-10/pt_chap5.html
Your "regular" hourly GCs are probably due to this known bug, "The JreMemoryLeakPreventionListener causes a full GC every hour when gcDaemonProtection=true".
Confirm your Tomcat versions and the value of the gcDaemonProtection
property of your JreMemoryLeakPreventionListener
(default is true
).
The patch was purportedly included in Tomcat v.7.0.28+ and v.6.0.36+.
Either upgrade your server(s), or choose a non-upgrading solution from here, summarized as:
-XX:+DisableExplicitGC
-XX:+ExplicitGCInvokesConcurrent
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"
gcDaemonProtection="false"/>
Credit where credit is due; I obtained my initial answer from here.