When the server is started, the JVM attempts to allocate all memory that it has been configured to use. If there is not enough free memory available on the system, then the server generates an error message that indicates that the server could not be started with the specified set of arguments. Note that it is possible that an invalid option was provided to the JVM (as described below), but if that same set of JVM arguments has already been used successfully to run the server, then it is more likely that the system does not have enough memory available.
There are a number of potential causes for this:
- If the amount of memory in the underlying system has changed (for example, system memory has been removed, or if the server is running in a zone or other type of virtualized container and a change has been made to the amount of memory that container will be allowed to use), then the server might need to be re-configured to use a smaller amount of memory than had been previously configured.
- Another process running on the system is consuming a significant amount of memory so that there is not enough free memory available to start the server. If this is the case, then either terminate the other process to make more memory available for the server, or reconfigure the server to reduce the amount of memory that it attempts to use.
- The server was just shut down and an attempt was made to immediately restart it. In some cases, if the server is configured to use a significant amount of memory, then it can take a few seconds for all of the memory that had been in use by the server, when it was previously running, to be released back to the operating system. In that case, run the vmstat command and wait until the amount of free memory stops growing before attempting to restart the server.
- If the system is configured with one or more memory-backed file systems, verify whether any large files might be consuming a significant amount of memory in any of those locations. If so, remove them or relocate them to a disk-based file system.
- For Linux systems only, if a mismatch exists between the huge pages setting for the JVM and the huge pages reserved in the operating system.
If nothing else works and there is still not enough free memory to allow the JVM to start, then as a last resort, try rebooting the system.