The following can be used to have the JVM release memory and shrink the heap when not used. This will release additional memory to the OS when not needed.
Linux update the /bridgegate/bin/runbridgegate
JAVA_OPTS="${JAVA_OPTS} -XX:+UseG1GC"
JAVA_OPTS="${JAVA_OPTS} -XX:NewRatio=1"
# Encourage heap shrinking when underutilized
JAVA_OPTS="${JAVA_OPTS} -XX:MaxHeapFreeRatio=30"
JAVA_OPTS="${JAVA_OPTS} -XX:MinHeapFreeRatio=10"
# Allow explicit GC to trigger concurrent collection
JAVA_OPTS="${JAVA_OPTS} -XX:+ExplicitGCInvokesConcurrent"
# Reduce startup latency by pre-touching heap pages
JAVA_OPTS="${JAVA_OPTS} -XX:+AlwaysPreTouch"
# Improve compaction and GC performance
JAVA_OPTS="${JAVA_OPTS} -XX:G1HeapRegionSize=16m"
JAVA_OPTS="${JAVA_OPTS} -XX:InitiatingHeapOccupancyPercent=35"
# Optional: limit old-gen GC pause time target
JAVA_OPTS="${JAVA_OPTS} -XX:MaxGCPauseMillis=200"
Windows update the /bridgegate/bin/bg_service.conf
Add the following:
# Encourage heap shrinking when underutilized wrapper.java.additional.40= -XX:MaxHeapFreeRatio=30" wrapper.java.additional.41= -XX:MinHeapFreeRatio=10" # Allow explicit GC to trigger concurrent collection wrapper.java.additional.42= -XX:+ExplicitGCInvokesConcurrent" # Reduce startup latency by pre-touching heap pages wrapper.java.additional.44= -XX:+AlwaysPreTouch" # Improve compaction and GC performance wrapper.java.additional.45= -XX:G1HeapRegionSize=16m" wrapper.java.additional.46= -XX:InitiatingHeapOccupancyPercent=35" # Optional: limit old-gen GC pause time target wrapper.java.additional.47= -XX:MaxGCPauseMillis=200"