A heap in Java is a shared memory allocation area. Suppose we set the minimum heap size to 1000 bytes (this is an absurdly small number). Now let's say that I create an instance of an object in my program that contains text two thousand characters long. I cannot save this object without first expanding the heap size. Now, presumably, my maximum heap parameter is large enough for this to be possible, but this is the reason for setting the maximum heap size.
However, suppose my server has 4G RAM, and I set the minimum heap size for it. (An absurdly large number.) If no other programs took up any memory, this would work. However, if I started the second process using my java program, it would not be able to allocate sufficient memory and exit.
The minimum size does two things for you; Firstly, it quickly allows RAM to provide a quick start. Secondly, it allows you to customize your jvm so that you have some invariants that allow you to make predictions about how many processes you can start. If your minimum heap size is too large, you are probably wasting memory on a process that never needs it, limiting the capacity of your system. If you set it too small, the programs will take a long time to start, which will negatively affect the performance of the process.
source share