?緊接上篇:JVM運行時數(shù)據(jù)區(qū)(上篇)-CSDN博客?
堆
- 一般Java程序中堆內(nèi)存是空間最大的一塊內(nèi)存區(qū)域。創(chuàng)建出來的對象都存在于堆上。
- 棧上的局部變量表中,可以存放堆上對象的引用。靜態(tài)變量也可以存放堆對象的引用,通過靜態(tài)變量就可以實現(xiàn)對象在線程之間共享。
- 字符串常量池,存儲字符串的常量。
- 堆空間有三個需要關注的值,used total max。
- used指的是當前已使用的堆內(nèi)存,total是java虛擬機已經(jīng)分配的可用堆內(nèi)存,max是java虛擬機可以分配的最大堆內(nèi)存。
- 當total達到max時說明可分配內(nèi)容已滿,注意此時并不代表OOM!
方法區(qū)
方法區(qū)是Java虛擬機規(guī)范中提出來的一個虛擬機概念,在HotSpot不同版本中會用永久代或者元空間來實現(xiàn)。方法區(qū)主要存放的是基礎信息,包含:
- 每一個加載的類的元信息(基礎信息)。
-
運行時常量池,保存了字節(jié)碼文件中的常量池內(nèi)容,避免常量內(nèi)容重復創(chuàng)建減少內(nèi)存開銷。
總結
ps:jdk8文章來源:http://www.zghlxwxcb.cn/news/detail-796175.html
運行時數(shù)據(jù)區(qū)指的是JVM所管理的內(nèi)存區(qū)域,其中分成兩大類: 文章來源地址http://www.zghlxwxcb.cn/news/detail-796175.html
-
線程共享 – 方法區(qū)、堆
- 方法區(qū):存放每一個加載的類的元信息、運行時常量池、字符串常量池。
- 堆:存放創(chuàng)建出來的對象。
-
線程不共享 – 本地方法棧、虛擬機棧、程序計數(shù)器
- 本地方法棧和虛擬機棧都存放了線程中執(zhí)行方法時需要使用的基礎數(shù)據(jù)。
- 程序計數(shù)器存放了當前線程執(zhí)行的字節(jié)碼指令在內(nèi)存中的地址。
- 直接內(nèi)存主要是NIO使用,由操作系統(tǒng)直接管理,不屬于JVM內(nèi)存。
到了這里,關于JVM運行時數(shù)據(jù)區(qū)(下篇)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!