In order to ensure cost efficiency, all platform-managed Java servers are automatically configured to utilize memory in the most beneficial way. It is achieved by adjusting the main Java memory parameters based on resources allocated to a container.
Tip: Non-Cloudjiffy-managed Java-based containers can be optimized similarly using the Java Memory Agent add-on.
Herewith, for high-performance or any other custom configurations, the default options can be manually changed.
1. In order to provide all the preferred Java options at once, the variables.conf file can be utilized.
Depending on a particular application server I am working with, the exact location may vary:
- Tomcat, TomEE - /opt/tomcat/conf/variables.conf
- Jetty - /opt/jetty/etc/variables.conf
- Spring Boot - /opt/shared/conf/variables.conf
- GlassFish - /opt/glassfish/glassfish/domains/domain1/config/variables.conf
- Payara - /opt/payara/glassfish/domains/domain1/config/variables.conf
- WildFly - /opt/wildfly/conf/variables.conf
2. Restart nodes after applying changes.
Redefining Main Java Parameters
Most of the essential memory parameters (-Xms, -Xmn, -Xmx, -Xminf, -Xmaxf, -XX:MaxPermSize, *-XX:+Use.GC) can be redefined using the dedicated environment variables.
As an example, you can Add the -Xmx option (i.e. maximum size for the Java heap memory):
Spring Boot and Java Engine-Specific Variables
When operating with the Spring Boot and Java Engine templates, I can provide two additional variables:
- JAVA_OPTS - to customize Java options for my app (similar to the variables.conf file).
- JAVA_ARGS - to pass some custom arguments to my application main function.
Restart my application server(s) in order to apply changes.