¿Por qué la JVM permite establecer el valor "alto" para IntegerCache, pero no el "bajo"?

Todos sabemos que Java tiene un caché paraInteger (y algunos otros tipos) para el número en el rango[-128, 127] que se consideran "de uso común".

El caché está diseñado de la siguiente manera:

private static class IntegerCache {
    static final int low = -128;
    static final int high;
    static final Integer cache[];

    static {
        // high value may be configured by property
        int h = 127;
        String integerCacheHighPropValue =
            sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
        if (integerCacheHighPropValue != null) {
            try {
                int i = parseInt(integerCacheHighPropValue);
                i = Math.max(i, 127);
                // Maximum array size is Integer.MAX_VALUE
                h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
            } catch( NumberFormatException nfe) {
                // If the property cannot be parsed into an int, ignore it.
            }
        }
        high = h;

        cache = new Integer[(high - low) + 1];
        int j = low;
        for(int k = 0; k < cache.length; k++)
            cache[k] = new Integer(j++);

        // range [-128, 127] must be interned (JLS7 5.1.7)
        assert IntegerCache.high >= 127;
    }

    private IntegerCache() {}
}

Sé que puedo extender elhigh valor dando un parámetro a la JVM:

java -Djava.lang.Integer.IntegerCache.high=xxxx Aclass.class

Lo que no entiendo es por qué no se nos permite anular ellow valor?

Tenga en cuenta que no estaba tratando de encontrar una solución, sino que entiendo por qué no está permitido por algunas razones oscuras.

Respuestas a la pregunta(1)

Su respuesta a la pregunta