欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java的Integer緩存池用法

 更新時間:2025年02月07日 11:01:35   作者:空說  
Java的Integer緩存池主要為了提升性能和節(jié)省內(nèi)存,它緩存了-128到127范圍內(nèi)的Integer對象,因此這些對象在比較時會直接比較引用,而不是值,其他包裝類如Byte、Short、Character也有類似的緩存池

Java的Integer緩沖池?

Integer 緩存池主要為了提升性能和節(jié)省內(nèi)存。根據(jù)實踐發(fā)現(xiàn)大部分的數(shù)據(jù)操作都集中在值比較小的范圍,因此緩存這些對象可以減少內(nèi)存分配和垃圾回收的負(fù)擔(dān),提升性能。

在-128到 127范圍內(nèi)的 Integer 對象會被緩存和復(fù)用。

原理

int 在自動裝箱的時候會調(diào)用Integer.valueOf,進而用到了 IntegerCache。

@HotSpotIntrinsicCandidate
public static Integer value0f(int i){
    if(i>= IntegerCache.low && i<= IntegerCache.high)  //如果傳入的int值在緩存范圍內(nèi),則直接從緩存中返回Integer對象
        return IntegerCache.cache[i+(-IntegerCache.low)];
    return new Integer(i);                              //否則,創(chuàng)建新的Integer對象
}
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 = VM.getSavedProperty( key:"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 i = low;
        for(int k=0;k< cache.length; k++)    //遍歷創(chuàng)建-128-127的所有對象
            cache[k]= new Integer(i++);
        assert IntegerCache.high >= 127;
    }
    
    private IntegerCache(){}
}

所以這里還有個面試題:就是為啥 Integer 127 之內(nèi)的相等,而超過 127 的就不等了?

因為小于等于127的 Integer 對象是從同一個緩存池中獲取的,它們指向的是相同的對象實例,所以它們的引用相等

不僅 Integer 有,Long 同樣有一個緩存池,不過范圍是寫死的 -128 到 127,不能通過JVM參數(shù)進行調(diào)整

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

總結(jié)

  • Byte,Short,Integer,Long這4種包裝類默認(rèn)創(chuàng)建了數(shù)值[-128,127]的相應(yīng)類型的緩存數(shù)據(jù)
  • Character 創(chuàng)建了數(shù)值在 [0,127]范圍的緩存數(shù)據(jù)
  • Boolean 直接返回 True or False
  • Float 和 Double 沒有緩存數(shù)據(jù),畢竟是小數(shù),能存的數(shù)太多了

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaSE實現(xiàn)文件壓縮與解壓縮的技巧分享

    JavaSE實現(xiàn)文件壓縮與解壓縮的技巧分享

    我們在日常實際開發(fā)中,對于文件壓縮和解壓縮場景,是非常常見的操作,本文詳細(xì)介紹JavaSE中文件壓縮和解壓縮的實現(xiàn)方法,包括源代碼解析、應(yīng)用場景案例、優(yōu)缺點分析、案例演示、文末總結(jié)等等,請同學(xué)們耐心閱讀
    2024-03-03
  • java實現(xiàn)獲取網(wǎng)站的keywords,description

    java實現(xiàn)獲取網(wǎng)站的keywords,description

    這篇文章主要介紹了java實現(xiàn)獲取網(wǎng)站的keywords,description的相關(guān)資料,需要的朋友可以參考下
    2015-03-03
  • Struts2學(xué)習(xí)筆記(9)-Result配置全局結(jié)果集

    Struts2學(xué)習(xí)筆記(9)-Result配置全局結(jié)果集

    這篇文章主要介紹Struts2中使用Result配置全局結(jié)果集的方法,希望能給大家做一個參考。
    2016-06-06
  • BootStrap Jstree 樹形菜單的增刪改查的實現(xiàn)源碼

    BootStrap Jstree 樹形菜單的增刪改查的實現(xiàn)源碼

    這篇文章主要介紹了BootStrap Jstree 樹形菜單的增刪改查的實現(xiàn)源碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • Java報錯:FileNotFoundException的解決方案

    Java報錯:FileNotFoundException的解決方案

    在Java編程中,FileNotFoundException 是一種常見的受檢異常,通常發(fā)生在試圖打開一個不存在的文件或文件路徑錯誤時,本文將詳細(xì)探討FileNotFoundException的成因、解決方案以及預(yù)防措施,幫助開發(fā)者理解和避免此類問題,需要的朋友可以參考下
    2024-06-06
  • SpringMVC的最小化配置說明

    SpringMVC的最小化配置說明

    這篇文章主要介紹了SpringMVC的最小化配置說明,Spring MVC是一個基于Java的Web框架,用于構(gòu)建靈活、高效的Web應(yīng)用程序,它采用了MVC的設(shè)計模式,將應(yīng)用程序的邏輯分為模型、視圖和控制器三個部分,以實現(xiàn)代碼的分離和重用,需要的朋友可以參考下
    2023-10-10
  • 一篇文章帶你了解Java SpringBoot四大核心組件

    一篇文章帶你了解Java SpringBoot四大核心組件

    這篇文章主要介紹了SpringBoot四大核心組件的使用小結(jié),詳細(xì)的介紹了這方面的知識,有興趣的可以了解一下,希望能夠給你帶來幫助
    2021-09-09
  • Java中常用的五種List聲明并賦值操作方式

    Java中常用的五種List聲明并賦值操作方式

    在Java編程中經(jīng)常會使用到集合類來存儲和操作多個元素,List是一種常見的集合類,它允許存儲重復(fù)的元素,并且保持元素的插入順序,這篇文章主要給大家介紹了關(guān)于Java中常用的五種List聲明并賦值操作的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • 最新評論