栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

整数缓存有多大?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

整数缓存有多大?

内部Java实现,无法配置,范围是 -128到127 。您可以检查

Javadocs
或仅查看来源:

public static Integer valueOf(int i) {         final int offset = 128;         if (i >= -128 && i <= 127) { // must cache  return IntegerCache.cache[i + offset];         }         return new Integer(i);}

UPD。错了 (感谢Marco Topolnik)。以上所有内容都与较旧的Java实现有关。对于 Java 7
实现,可以使用系统属性来实现:

-Djava.lang.Integer.IntegerCache.high=<size>

或JVM设置:

-XX:AutoBoxCacheMax=<size>

UPD。 2

java.math.BigInteger
具有值 -16 <= x <= 16的硬编码缓存。从来源:

    private final static int MAX_ConSTANT = 16;    private static BigInteger posConst[] = new BigInteger[MAX_CONSTANT+1];    private static BigInteger negConst[] = new BigInteger[MAX_CONSTANT+1];    static {    for (int i = 1; i <= MAX_CONSTANT; i++) {        int[] magnitude = new int[1];        magnitude[0] = i;        posConst[i] = new BigInteger(magnitude,  1);        negConst[i] = new BigInteger(magnitude, -1);    }    }    public static BigInteger valueOf(long val) {        // If -MAX_ConSTANT < val < MAX_CONSTANT, return stashed constant        if (val == 0) return ZERO;        if (val > 0 && val <= MAX_CONSTANT) return posConst[(int) val];        else if (val < 0 && val >= -MAX_CONSTANT) return negConst[(int) -val];        return new BigInteger(val);    }


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/427818.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号