欢迎光临
我们一直在努力

Java和Python中关于Integer对象的缓存情况

Java和Python中关于Integer对象的缓存情况

首先看结论,java中[-128,127]闭区间内的数字会被放在Integer对象池中

看代码

public class Test {
    public static void main(String[] args) {

        Integer a = 3;
        Integer b = 3;
        Integer c = 129;
        Integer d = 129;
        System.out.println(a==b);
        System.out.println(c==d);

    }
}

运行结果

true
false

其实 Java中的基本数据类型对应的包装类都具有自己的cache机制 Integer对应的IntegerCache, Double对应DoubleCache 以此类推
cache支持的最大范围也可以通过jdk启动参数来进行配置,比如IntegerCache的最大127,即可以通过-XX:AutoBoxCacheMax=256 来改成256 或者其他适合的数。


python中同样也有类似的小整型池的技术,对于python2.5以后的版本 是会缓存[-5,257) 左开右闭之间的整型,以减少malloc/free的系统调用

看代码

a = 3
b = 3
print a is b
c = 257
d = 257
print c is d
运行结果
True
False

 

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » Java和Python中关于Integer对象的缓存情况
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址