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

總的就是
java的內(nèi)存模型
內(nèi)存模型又分堆內(nèi)存(heap)和方法區(qū)(有時(shí)也稱(chēng)為non-heap)和棧
堆又分新生代(Young)和老年代(old/Tenured)
新生代又分默認(rèn)比例為8:1:1的eden空間、from survivor空間、to survivor空間
當(dāng)進(jìn)行垃圾回收時(shí),eden、survivor from 存活得對(duì)象會(huì)復(fù)制到servivor to空間
接著from與to空間互換.(當(dāng)from區(qū)的對(duì)象足夠老時(shí),即標(biāo)記的次數(shù)達(dá)到老年級(jí)別,便到老年代去)
內(nèi)存的大小設(shè)置參數(shù)可以如下一張圖說(shuō)明

-XMS:堆的最小空間
-XMX:堆的最大空間
-PermSize:方法區(qū)的最小空間
-MaxPermSize:方法區(qū)的最大空間
-Xss:每個(gè)線(xiàn)程的堆??臻g
-newSize:新生代最小空間
-maxNewSize:新生代最大空間
老年代內(nèi)存可以通過(guò)設(shè)置堆的大寫(xiě)和新生代的大小來(lái)控制
老年代內(nèi)存=堆內(nèi)存-新生代內(nèi)存

棧
程序計(jì)數(shù)器
線(xiàn)程私有,控制著字節(jié)碼所執(zhí)行的行數(shù).調(diào)用本地方法(native)時(shí)為空
當(dāng)前線(xiàn)程所執(zhí)行的字節(jié)碼的行號(hào)指示器,字節(jié)碼解釋器就是在工作時(shí)通過(guò)改變計(jì)數(shù)器的行號(hào)來(lái)獲獲取要執(zhí)行的字節(jié)碼指令.調(diào)用本地方法(native)時(shí)計(jì)數(shù)器為空
虛擬機(jī)棧
線(xiàn)程私有,java執(zhí)行方法的內(nèi)存模型
每個(gè)方法執(zhí)行的時(shí)候都會(huì)創(chuàng)建一個(gè)棧幀,用于存放局部變量、操作數(shù)棧、動(dòng)態(tài)鏈接、方法出口等信息
局部變量表:基本數(shù)據(jù)類(lèi)型、對(duì)象引用、long和double類(lèi)型占兩個(gè)局部變量空間
每調(diào)用一個(gè)方法,都會(huì)對(duì)參數(shù)進(jìn)行壓棧
本地方法棧
線(xiàn)程私有.調(diào)用native方法時(shí)
堆:
堆內(nèi)存
線(xiàn)程共享,對(duì)象的實(shí)例以及數(shù)組都存儲(chǔ)在這里
堆又分新生代、老年代
在分代收集算法中,新生代又分eden空間、from survitor空間 和to survitor空間).它們之間內(nèi)存比例為8:1:1
方法區(qū)
線(xiàn)程共享
存放類(lèi)的信息、常量、靜態(tài)變量、即時(shí)編譯后的代碼
方法區(qū)下又有運(yùn)行時(shí)常量池:存放編譯期生成的字面量和符號(hào)引用
以上這篇基于jvm java內(nèi)存區(qū)域的介紹就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
結(jié)合線(xiàn)程池實(shí)現(xiàn)apache?kafka消費(fèi)者組的誤區(qū)及解決方法
這篇文章主要介紹了結(jié)合線(xiàn)程池實(shí)現(xiàn)apache?kafka消費(fèi)者組的誤區(qū)及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
Java并發(fā) CompletableFuture異步編程的實(shí)現(xiàn)
這篇文章主要介紹了Java并發(fā) CompletableFuture異步編程的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Java SpringBoot的相關(guān)知識(shí)點(diǎn)詳解
這篇文章主要介紹了SpringBoot的相關(guān)知識(shí)點(diǎn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-10-10
Java工程mybatis實(shí)現(xiàn)多表查詢(xún)過(guò)程詳解
這篇文章主要介紹了Java工程mybatis實(shí)現(xiàn)多表查詢(xún)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
SpringBoot將多個(gè)文件夾進(jìn)行壓縮的兩種方法(瀏覽器下載和另存為)
Spring Boot項(xiàng)目通常不會(huì)自動(dòng)對(duì)文件夾進(jìn)行壓縮,不過(guò),在打包應(yīng)用時(shí),如果你使用了Maven或Gradle這樣的構(gòu)建工具,并且配置了相應(yīng)的插件,可以在打成jar或war包的時(shí)候?qū)⒁蕾?lài)的庫(kù)文件合并并壓縮,本文介紹了SpringBoot將多個(gè)文件夾進(jìn)行壓縮的兩種方法2024-07-07
Java使用lambda表達(dá)式簡(jiǎn)化代碼的示例詳解
這篇文章主要給大家介紹了Java如何使用lambda表達(dá)式簡(jiǎn)化代碼的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-11-11
關(guān)于maven環(huán)境的安裝及maven集成idea環(huán)境的問(wèn)題
Maven 是一個(gè)基于 Java 的工具,所以要做的第一件事情就是安裝 JDK。本文重點(diǎn)給大家介紹關(guān)于maven環(huán)境的安裝及和idea環(huán)境的集成問(wèn)題,感興趣的朋友一起看看吧2021-09-09

