13 張圖解 Java 中的內(nèi)存模型
點(diǎn)擊上方藍(lán)色“程序猿DD”,選擇“設(shè)為星標(biāo)”
回復(fù)“資源”獲取獨(dú)家整理的學(xué)習(xí)資料!

作者 | Carson_Ho
-
了解Java中的對(duì)象、變量等存放的內(nèi)存區(qū)域十分重要 -
本文將全面講解Java虛擬機(jī)中的內(nèi)存模型 & 分區(qū),希望你們會(huì)喜歡
目錄
1. 內(nèi)存模型 & 分區(qū)
Java虛擬機(jī)在運(yùn)行Java程序時(shí),會(huì)管理著一塊內(nèi)存區(qū)域:運(yùn)行時(shí)數(shù)據(jù)區(qū)
在運(yùn)行時(shí)數(shù)據(jù)區(qū)里,會(huì)根據(jù)用途進(jìn)行劃分:
-
Java虛擬機(jī)棧(棧區(qū)) -
本地方法棧 -
Java堆(堆區(qū)) -
方法區(qū) -
程序計(jì)數(shù)器
2. Java堆
3. Java虛擬機(jī)棧
4. 本地方法棧
5. 方法區(qū)
6. 程序計(jì)數(shù)器
7. 額外知識(shí):直接內(nèi)存
-
定義:NIO類(JDK1.4引入)中基于通道和緩沖區(qū)的I/O方式 通過(guò)使用Native函數(shù)庫(kù) 直接分配 的堆外內(nèi)存 -
特點(diǎn):不受堆大小限制
不屬于虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)的一部分 & 不在堆中分配
-
應(yīng)用場(chǎng)景:適用于頻繁調(diào)用的場(chǎng)景
通過(guò)一個(gè) 存儲(chǔ)在Java堆中的DirectByteBuffer對(duì)象 作為這塊內(nèi)存的引用 進(jìn)行操作,從而避免在 Java 堆和 Native堆之間來(lái)回復(fù)制數(shù)據(jù),提高使用性能
-
拋出的異常:OutOfMemoryError,即與其他內(nèi)存區(qū)域的總和 大于 物理內(nèi)存限制
8. 總結(jié)
往期推薦
離職后與大家在星球聊了很多,你不來(lái)看看?

我的星球是否適合你?
點(diǎn)擊閱讀原文看看我們都聊過(guò)啥?
評(píng)論
圖片
表情
