【Java基礎面試題025】什么是Java的Integer緩存池?

回答重點

Java的Integer緩存池(Integer Cache)是為了提升性能和節省內存。根據實踐發現大部分的數據操作都集中在值比較小的范圍,因此緩存這些對象可以減少內存分配和垃圾回收的負擔,提升性能

在 -128到127范圍內的Integer對象會被緩存和復用

原理:

  • Java在自動裝箱時,對于值范圍在-128 - 127之中的int類型,會直接返回一個已經緩存的Integer對象,而不是創建新的對象

緩存池的使用場景:

  • 自動裝箱(Auto-boxing):當基本類型int轉換為包裝類Integer時,若數值在緩存范圍內,返回緩存對象,而不是創建新對象
  • 值比較:由于相同范圍內的整數使用同一個緩存對象,使用==可以正確比較它們的地址(引用相同),而不需要使用equals()。但是要注意對于超過緩存范圍的Integer對象,==比較的是兩個不同的對象地址。

擴展知識

緩存池的可配置范圍

在Java8及以后的版本中,可以通過JVM參數 -XX:AutoBoxCacheMax=size 來調整緩存池的上限

比如:

java -XX:AutoBoxCacheMax=500

這樣可以將緩存范圍擴展到-128 - 500

緩存池實現原理分析

實現的原理是int在自動裝箱的時候會調用Integer.valueOf(),進而用到了IntegerCache。

IntegerCache的底層實現,就是判斷下值是否在范圍之內,如果是的話去IntegerCache中取

IntegerCache在靜態塊中會初始化好緩存值

不僅Integer有緩存池,Long也是有的,不過范圍是寫死的 -128 到 127(無法配置)

  • Long、Short、Byte這三種包裝類緩存范圍也是-128到127的
  • Float和Double沒有緩存池,因為是小數,能存的數太多了
  • Character緩存范圍是\u0000到\u007F(即0到127,代表ASCII字符集)
  • Boolean只緩存兩個值,即true和false

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/63588.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63588.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63588.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Nginx IP優化限制策略

Nginx 如何限制每個 IP 地址的連接數,優化資源分配? Nginx 限制每個 IP 地址的連接數 Nginx 提供了多種機制來限制單個 IP 地址所能建立的同時連接數,這對于防止資源耗盡和提高服務穩定性至關重要。以下是幾種有效策略: 1. 使用…

[spring]XML配置文件標簽

spring的XML配置文件的標簽大體可以分為兩種: 其中的默認標簽,我們前面文章里面出現的標簽都是默認標簽,是spring本身自帶的,不需要我們去引入其他東西。而自定義標簽則是指非默認標簽的其他的由我們或產品發行方自定義的對接spir…

簡單的bytebuddy學習筆記

簡單的bytebuddy學習筆記 此筆記對應b站bytebuddy學習視頻進行整理,此為視頻地址,此處為具體的練習代碼地址 一、簡介 ByteBuddy是基于ASM (ow2.io)實現的字節碼操作類庫。比起ASM,ByteBuddy的API更加簡單易用。開發者無需了解class file …

【信息系統項目管理師】高分論文:論信息系統項目的進度管理(人力資源管理系統)

更多內容請見: 備考信息系統項目管理師-專欄介紹和目錄 文章目錄 論文1、規劃進度管理3、排列活動順序4、估算活動持續時間5、制訂進度計劃6、控制進度論文 2022年2月,我作為項目經理參與了XX電網公司人力資源管理系統建設項目,該項目是2022年XX電網公司“十三五”信息化規…

vue3項目結合Echarts實現甘特圖(可拖拽、選中等操作)

效果圖: 圖一:選中操作 圖二:上下左右拖拽操作 本案例在echarts???????示例機場航班甘特圖的基礎上修改??????? 封裝ganttEcharts組件,測試數據 airport-schedule.jsonganttEcharts代碼: 直接復制粘貼可測????…

GIT安裝過程

文章目錄 ?下載安裝包?安裝過程?驗證安裝?Git的基本使用? ?Git的安裝可以通過以下步驟完成? ?下載安裝包? 首先,訪問Git官網(https://git-scm.com/)或Git for Windows(https://gitforwindows.org/)下載對應系統的安裝包。 對于Windows系統,通常…

Java 技術面試常見問題解析

1.說說Mybatis的緩存機制: MyBatis 是一個優秀的持久層框架,它簡化了企業應用開發中數據庫操作的代碼。MyBatis 提供了一級緩存和二級緩存機制來優化對數據庫的訪問。 一級緩存 (SqlSession級別的緩存) 一級緩存是 MyBatis 中默認開啟且無法關閉的緩存機制。它存…

Word使用分隔符實現頁面部分分欄

文章目錄 Word使用分隔符實現頁面部分分欄分隔符使用頁面設置 Word使用分隔符實現頁面部分分欄 分隔符使用 word中的分隔符: 前面不分欄,后面分欄(或前面分欄,后面不分欄),只需要在分隔位置處插入分隔符:“連續”即…

掌握 Spring Boot 中的 WebClient:何時以及為何使用它而不是 RestTemplate

在開發 Spring Boot 應用程序時,與 RESTful Web 服務進行通信是一項常見需求。從歷史上看,開發人員已將RestTemplate用于此目的。然而,隨著反應式編程的出現和對更高效資源利用的需求,WebClient已成為首選。本文探討了RestTemplat…

主曲率為常數時曲面分類

主曲率為常數 ? K , H \Leftrightarrow K,H ?K,H 為常數,曲面分類: 1.若 k 1 k 2 0 k_1k_20 k1?k2?0,則 S S S為全臍點曲面——平面的一部分; 2.若 k 1 k 2 ≠ 0 k_1k_2\neq0 k1?k2?0,則 S S S為全臍點曲面——球面的一部分&…

asp.net core發布配置端口號,支持linux

方式一,修改配置文件 appsettings.json 找到文件 appsettings.json, 添加如下節點配置,在linux環境需要設置0.0.0.0才可以正常代表本機,然后被其他機器訪問,此處設置端口8000, "Kestrel": {&quo…

【安當產品應用案例100集】033-安當TDE透明加密在移動存儲加密中的應用案例

背景介紹 隨著移動互聯網的普及,企業和個人越來越依賴移動存儲設備,如U盤、移動硬盤以及云存儲服務進行數據的存儲和傳輸。然而,這種便捷性也帶來了數據安全的隱患。如何確保存儲在移動設備上的數據不被非法訪問和泄露,成為企業和…

【linux 內存】cat /proc/meminfo、free

cat /proc/meminfo 各字段詳解 /proc/meminfo是了解Linux系統內存使用狀況的主要接口,我們最常用的”free”、”vmstat”等命令就是通過它獲取數據的 ,/proc/meminfo所包含的信息比”free”等命令要豐富得多,因此需要了解這些字段的含義。 …

Android HandlerThread、Looper、MessageQueue 源碼分析

Android HandlerThread、Looper、MessageQueue 源碼分析 簡介 在 Android 開發中,大家應該對 HandlerThread 有一定了解。顧名思義,HandlerThread 是 Thread 的一個子類。與普通的 Thread 不同,Thread 通常一次只能執行一個后臺任務&#x…

配置PostgreSQL用于集成測試的步驟

在進行軟件開發時,集成測試是確保各個組件能夠協同工作的關鍵環節。PostgreSQL作為一種強大的開源數據庫系統,常被用于集成測試中。下面將詳細介紹如何在不同的環境中配置PostgreSQL以支持集成測試。 1. 選擇并安裝PostgreSQL 首先,你需要根…

WebRTC搭建與應用(一)-ICE服務搭建

WebRTC搭建與應用(一) 近期由于項目需要在研究前端WebGL渲染轉為云渲染,借此機會對WebRTC、ICE信令協議等有了初步了解,在此記錄一下,以防遺忘。 第一章 ICE服務搭建 文章目錄 WebRTC搭建與應用(一)前言一、ICE是什么?二、什么…

【學習筆記】深入淺出詳解Pytorch中的View, reshape, unfold,flatten等方法。

文章目錄 一、寫在前面二、Reshape(一)用法(二)代碼展示 三、Unfold(一)torch.unfold 的基本概念(二)torch.unfold 的工作原理(三) 示例代碼(四&a…

深入理解 MySQL 索引

引言 在數據庫管理中,索引(Index)是提高查詢性能的關鍵技術之一。MySQL 是最流行的關系型數據庫管理系統之一,廣泛應用于各種規模的應用程序中。本文將深入探討 MySQL 中的索引概念、類型、工作原理以及最佳實踐,幫助…

利用notepad++刪除特定關鍵字所在的行

1、按組合鍵Ctrl H,查找模式選擇 ‘正則表達式’,不選 ‘.匹配新行’ 2、查找目標輸入 : ^.*關鍵字.*\r\n (不保留空行) ^.*關鍵字.*$ (保留空行)3、替換為:(空) 配置界面參考下圖: ??…

docker安裝和換源

安裝: https://www.runoob.com/docker/ubuntu-docker-install.html sudo apt-get remove docker docker-engine docker.io containerd runcsudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-commoncurl -fsS…