This article refers to Azul Zulu Prime JVM when using it with the now optional component Azul Zulu Prime System Tools (ZST). Since Azul Zulu Prime JVM 19.07 the ZST component is not required any more and depending on your use case Azul Zulu Prime JVM without ZST might be the preferred choice now as by its different memory management it is not affected by the problem described here. Though for large heapsizes (-Xmx settings) of hundreds of GBytes, the ZST component adds performance advantages for some applications.
When Azul Zulu Prime JVM is used with the ZST component, it preallocates a chunk of memory to hold the entire Xmx value setting to house regular Java objects that get allocated on the heap, plus additional spaces for other data types.
The first choices you make in reserving memory in Azul Zulu Prime are how much memory to reserve and when in the JVM process life cycle you want it allocated. Use the utility system-config-zing-memory in the Azul Zulu Prime Systems Tools set to make your choices.
For Azul Platform Prime with ZST the two available policies for determining when to preallocate Azul Zulu Prime memory are:
Selecting reserve-at-config will preallocate all the Azul Zulu Prime memory at once. Memory stays allocated, no matter how many times the Azul Zulu Prime JVM starts or stops. This is the mode you might prefer if you know that on this host only Azul Zulu Prime java processes are used and their -Xmx settings are not changed often. It is also the preferred mode on large machines in the range of hundreds of GBytes for the -Xmx setting.
Selecting reserve-at-launch will preallocate all the Azul Zulu Prime memory when the Azul Zulu Prime java process starts, and releases it when the process ends. This is the mode you might prefer if Azul Zulu Prime java is not always used on this host, like on developer machines, or if you have a mixed environment with other processes running.
When doing a new installation of ZST, the memory allocation policy is set to reserve-at-launch by default to simplify the installation and to avoid to preallocate too much memory for Azul Zulu Prime.
For further details about the ZST memory configuration using sudo system-config-zing-memory, please go to the following documentation page: https://docs.azul.com/prime/ZST-Memory-Configuration