nam*_*olk 1 java memory performance
我知道,对于小于128(默认值)的值,整数就像实习生一样,而不是对于超过该值的值.我知道这已作为答案多次给出,但我没有注意到一个地方,原因被问到.
所以我想知道的是,为什么整数仅作为小于128(默认值)的值的实习生,而不是更多的值?它如何改善内存使用/高性能?
从技术上讲,这些值是在加载类时预先缓存的.它与String.intern()不同,您可以返回您创建的值.
此外,最大值可能不是127,如果你设置它可以更高或使用类似的选项 -XX:+AggressiveOpts
可能会选择默认范围以与Byte保持一致.注意:缓存的值是
Boolean: both values
Byte: all
Character: 0 to 127
Short: -128 to 127
Integer: -128 to 127
Long: -128 to 127
Float and Double: none
BigInteger: -16 to 16 (in HotSpot Java 7)
BigDecimal: 0 to 10 (if you use valueOf(long)) and
0 to 0.000000000000000 (if you use valueOf(long, int)) (in HotSpot Java 7)
Run Code Online (Sandbox Code Playgroud)
这样做的原因是为了提高性能并降低GC压力.
创建垃圾可以用垃圾填满缓存,减慢所有代码的速度,还需要创建对象并清理它们.你做的工作越少,你的程序就越快,越一致.
http://www.javaspecialists.eu/archive/Issue191.html是一篇很好的文章