This section will explain what Xmx in Java is and how to establish a Java application's maximum heap size.
When we execute a Java application, it occasionally displays an error message like the one below:
A VM initialization error happened. Could not set aside sufficient space for the object heap. unable to build a Java virtual machine.
The error mentioned above suggests expanding the heap size before executing the application. There isn't enough room to build the thing. The Java -Xmx parameter should be used in conjunction with the provided heap size to fix this error. Let's look at what -Xmx in Java means.
What is Java Xmx?
The Java option Xmx defines the JVM's maximum memory (in bytes) allocation pool. The maximum heap size is configured. Keep in mind that the value must be more than 2MB and in multiples of 1024. The size in kilobytes is represented by the letter K or k, and the size in megabytes is represented by the letter M or m. 64M is the standard heap size.
Default Heap Size Based on the ergonomics algorithm, the initial maximum heap size is the default. The Java heap size ranges from 256M (266634176 bytes) to 4068M (4266146816 bytes), with 4068M being the maximum heap size.
We advise you to set the maximum heap size for small and medium Java applications between 512M and 1024M.
Java -Xmx1024M, -Xms512M
Establishing the maximum heap size
Although we can raise the heap size to any value, RAM must be able to accommodate that value. Let's say we wish to limit the heap size to 80M. Any of the following flags can be used to configure the maximum heap size. The heap size is the same for all commands.
1. -Xmx83886080 (memory allocation in bytes) (memory allocation in bytes)
2. -Xmx81920k (memory allocation in kilobytes)
3. -Xmx80M (memory allocation in Megabytes)
The Java heap memory can be allocated up to 80MB in size using the Xmx flags mentioned above. You should take note that there is no space between the flag (-Xmx) and memory size (80M). Whether you choose an uppercase or lowercase letter makes no difference. For instance, -Xmx80M and -Xmx80m are equivalent. It indicates that the application can utilize the entire 80M of memory that is available. As a result, Java's -Xmx flag modifies the JVM's maximum heap size.
To set the maximum heap size, follow the instructions below.
Step 1: Click on the system in the Control Panel after it has opened.
Step 2: Select Advanced system settings from the menu. The System Properties window is displayed.
Step 3: Select Environment Variables from the System Properties window. The Environment Variables dialogue box appears.
Step 4: Select the New button under System Variables in the Environment Variables
Step 5: Enter the variable names _JAVA OPTIONS and -Xmx512m in the window. Any number can be used in place of 512. Click the OK button three times after that.
The maximum heap size is now set at 512M.
The same thing can be done if you're using the Eclipse IDE by specifying the VM parameters.
Why is it necessary to increase the heap size?
The well-known java.lang.OutOfMemoryError will be raised if the Java process has used more memory than the -Xmx maximum Java heap size.
Other Arguments on the Command Line Connection to Memory
Java offers extra tools for managing the memory used by Java applications. The java -X command can be used to display the memory options that are available. It demonstrates the variety of memory management choices.
There are four command-line options for Java application memory in the aforementioned result.
- Disable class garbage collection with -Xnoclassgc.
- The command sets the Java heap's starting size with the argument -Xmssize>. It has a 2M default size (2097152 bytes). The file should have a size of at least 1024 bytes (1KB). It must be a number greater than 1024.
- -Xmx: Maximum Java heap size can be set.
- Set the Java thread stack size with the -Xss command-line option.
Let's look at some Xmx-based examples.
- Heap starts expanding from 2MB to 80MB with the -Xms2m -Xmx80m command.
- The heap starts at 70 MB and will never increase. -Xms70m -Xmx70m
- The heap starts at 40 MB and increases to the default maximum size using the -Xms40m option.
- -Xmx256m: Heap increases to a maximum of 256 MB from a pre-set beginning amount.