基于jvm java內(nèi)存區(qū)域的介紹

總的就是
java的內(nèi)存模型
內(nèi)存模型又分堆內(nèi)存(heap)和方法區(qū)(有時也稱為non-heap)和棧
堆又分新生代(Young)和老年代(old/Tenured)
新生代又分默認比例為8:1:1的eden空間、from survivor空間、to survivor空間
當進行垃圾回收時,eden、survivor from 存活得對象會復制到servivor to空間
接著from與to空間互換.(當from區(qū)的對象足夠老時,即標記的次數(shù)達到老年級別,便到老年代去)
內(nèi)存的大小設置參數(shù)可以如下一張圖說明
-XMS:堆的最小空間
-XMX:堆的最大空間
-PermSize:方法區(qū)的最小空間
-MaxPermSize:方法區(qū)的最大空間
-Xss:每個線程的堆??臻g
-newSize:新生代最小空間
-maxNewSize:新生代最大空間
老年代內(nèi)存可以通過設置堆的大寫和新生代的大小來控制
老年代內(nèi)存=堆內(nèi)存-新生代內(nèi)存
棧
程序計數(shù)器
線程私有,控制著字節(jié)碼所執(zhí)行的行數(shù).調(diào)用本地方法(native)時為空
當前線程所執(zhí)行的字節(jié)碼的行號指示器,字節(jié)碼解釋器就是在工作時通過改變計數(shù)器的行號來獲獲取要執(zhí)行的字節(jié)碼指令.調(diào)用本地方法(native)時計數(shù)器為空
虛擬機棧
線程私有,java執(zhí)行方法的內(nèi)存模型
每個方法執(zhí)行的時候都會創(chuàng)建一個棧幀,用于存放局部變量、操作數(shù)棧、動態(tài)鏈接、方法出口等信息
局部變量表:基本數(shù)據(jù)類型、對象引用、long和double類型占兩個局部變量空間
每調(diào)用一個方法,都會對參數(shù)進行壓棧
本地方法棧
線程私有.調(diào)用native方法時
堆:
堆內(nèi)存
線程共享,對象的實例以及數(shù)組都存儲在這里
堆又分新生代、老年代
在分代收集算法中,新生代又分eden空間、from survitor空間 和to survitor空間).它們之間內(nèi)存比例為8:1:1
方法區(qū)
線程共享
存放類的信息、常量、靜態(tài)變量、即時編譯后的代碼
方法區(qū)下又有運行時常量池:存放編譯期生成的字面量和符號引用
以上這篇基于jvm java內(nèi)存區(qū)域的介紹就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
使用springboot在工具類中讀取配置文件(ClassPathResource)
這篇文章主要介紹了使用springboot在工具類中讀取配置文件(ClassPathResource),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08java 使用poi 導入Excel數(shù)據(jù)到數(shù)據(jù)庫的步驟
這篇文章主要介紹了java 使用poi 導入Excel 數(shù)據(jù)到數(shù)據(jù)庫的步驟,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-12-12