当前位置: 首页 > news >正文

湖北省住房与城乡建设厅网站做网站 excel

湖北省住房与城乡建设厅网站,做网站 excel,沈阳网站建设公司电话,京东购物网站怎么做文章目录 一、简介二、实现原理三、修改缓存范围 一、简介 Integer缓存池是一种优化技术,用于提高整数对象的重用和性能。在Java中,对于整数值在 -128 到 127 之间的整数对象,会被放入缓存池中,以便重复使用。这是因为在这个范围…

文章目录

  • 一、简介
  • 二、实现原理
  • 三、修改缓存范围

一、简介

Integer缓存池是一种优化技术,用于提高整数对象的重用和性能。在Java中,对于整数值在 -128 到 127 之间的整数对象,会被放入缓存池中,以便重复使用。这是因为在这个范围内的整数值被频繁使用,因此重用这些对象可以节省内存和提高性能。当使用自动装箱机制创建整数对象时,如果对象的值在缓存池范围内,会直接返回缓存池中的对象,而不是创建新的对象。这个特性可以通过调用Integer.valueOf(int)方法来实现。

根据通过设置JVM-XX:AutoBoxCacheMax=可以来修改缓存的最大值,最小值改不了

二、实现原理

底层实现的原理是int 在自动装箱的时候会调用IntegervalueOf进而用到了 IntegerCache。

    public static Integer valueOf(String s) throws NumberFormatException {return Integer.valueOf(parseInt(s, 10));}

没有太多复杂的步骤,只需要判断给定的值是否在指定范围内,如果是的话,则从 IntegerCache 中获取已经预先初始化好的缓存值。

这些缓存值在静态块中被初始化。

/*** Cache to support the object identity semantics of autoboxing for values between* -128 and 127 (inclusive) as required by JLS.** The cache is initialized on first usage.  The size of the cache* may be controlled by the {@code -XX:AutoBoxCacheMax=<size>} option.* During VM initialization, java.lang.Integer.IntegerCache.high property* may be set and saved in the private system properties in the* sun.misc.VM class.*/private static class IntegerCache {static final int low = -128;static final int high;static final Integer cache[];static {// high value may be configured by propertyint 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_VALUEh = 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() {}}

这里还有一个有趣的面试题,即在 Integer 类中,数值在 127 以内的两个 Integer 对象会被认为是相等的,而超过 127 的数值则不相等。这是因为在 Java 中,对于数值在 -128 到 127 之间的整型对象,会使用 IntegerCache 中预先初始化的对象。因此,当数值在该范围内时,它们实际上是同一个对象,因此相等性比较会返回 true。这种行为不仅适用于 Integer 类,也适用于 Long 类。

    public static Long valueOf(long l) {final int offset = 128;if (l >= -128 && l <= 127) { // will cachereturn LongCache.cache[(int)l + offset];}return new Long(l);}

对于小数类型的 Float 和 Double,不会有像整数类型那样的缓存机制。因为小数类型的数值范围非常广泛,无法事先预先缓存所有可能的数值。因此,对于 Float 和 Double 类型的对象,相等性比较会根据它们的实际数值来判断,而不是基于对象的引用。所以,即使两个 Float 或两个 Double 对象的数值相同,它们也不会被认为是相等的。

三、修改缓存范围

IntegerCache

通过注释可知缓存值可以修改

IntegerCache

验证:默认情况下

integer

添加JVM参数 -XX:AutoBoxCacheMax=500

AutoBoxCacheMax

再次执行:

integer
发现i1和i2相等返回true,说明参数生效了。

http://www.yayakq.cn/news/599789/

相关文章:

  • 网站建设gongsiwordpress 主题更换
  • 天津做网站的公司有哪些网站建设与运营培训班
  • 做网站最小的字体是多少单位网站的作用
  • 图标网站导航制作怎么做网页设计视频网站
  • 垫江网站建设哪家好免费创建个人网站申请
  • 网站培训班小清新 轻音乐网站 wordpress
  • 药店网站建设相关费用北京app开发定制公司
  • 奉贤广州网站建设网页搜索引擎
  • 可信网站查询福州建设网站
  • 交通局网站模板无锡定制公司网站
  • 网站 域名绑定灵犀科技 高端网站建设
  • 武夷山建设局网站如何低成本做网站推广
  • 深圳手机网站公司有设计师做的装修效果图的网站
  • 公司设计网站需要注意哪些江西省建设工程有限公司
  • 有哪些网站可以学做糕点的如何百度注册公司官网
  • 网站建设需要提供的资料文档做网站的伪原创怎么弄
  • 阜新本地网站建设平台上海知名的网站建设公司
  • 谷歌网站怎么打不开网站后台不能修改
  • ckplayer怎么上传做网站江津网站建设怎么样
  • 漳州找人做网站要求哪些充值话费网站建设
  • 银川网站建设哪家便宜石家庄网站搭建定制
  • 忻州市住房城乡建设局网站响应式网站与自适应
  • 广州市建设厅网站网站想换个风格怎么做
  • 哪个做网站公司好全球华设计大奖
  • 网站建设如何传视频教程桂林房产
  • 论述网站建设过程中应注意的问题博罗东莞网站建设
  • 成都网站制作公司电话网络运维工程师需要掌握的哪些技能
  • 做设计网站的工作怎么样交互设计精髓
  • 网站设计规划范文肥料网站建设 中企动力
  • 舟山公司网站建设做像淘宝这样的购物网站要多少钱