If we set -Xms to, say, 500MB the current code will
1. Say that min young size is three pages (generally in the order of 1.5MB)
2. Say that min old size is min heap size - min young size (=498.5MB)
This gives us a fairly large old generation and more importantly in practice it stops us from shrinking the heap down to -Xms, since the young generation will in general contain live data and be larger than the minimum size.
The proposed solution is to set the min old size to a fairly small number in the same way the young generation is initialized today. For instance gen_alignment or something similar.
1. Say that min young size is three pages (generally in the order of 1.5MB)
2. Say that min old size is min heap size - min young size (=498.5MB)
This gives us a fairly large old generation and more importantly in practice it stops us from shrinking the heap down to -Xms, since the young generation will in general contain live data and be larger than the minimum size.
The proposed solution is to set the min old size to a fairly small number in the same way the young generation is initialized today. For instance gen_alignment or something similar.