Last active
September 30, 2016 16:54
-
-
Save lawesson/7b8fc0701efffa7245bf89442c339a33 to your computer and use it in GitHub Desktop.
java.lang.Integer.IntegerCache
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
... | |
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() {} | |
} | |
... |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment