JVM

Java虛擬機(jī)學(xué)習(xí)(1):體系結(jié)構(gòu) 內(nèi)存模型

JVM內(nèi)存區(qū)域模型

1.方法區(qū): 也稱“永久代”臭杰、“非堆”褪那,它用于存儲虛擬機(jī)加載的類信息、常量涂屁、靜態(tài)變量、是各個線程共享的內(nèi)存區(qū)域灰伟。

? ? ? ? ? ? ? ? ? 默認(rèn)最小值為16MB,最大值64MB,可以通過-XX:PermSize 和 -XX:MaxPermSize參數(shù)限制方法區(qū)的大小拆又。

? ? ? ? ? ? ? ? ?運行時常量池:是方法區(qū)的一部分,Class文件中除了有類的版本栏账,字段帖族,方法,接口等描述信息外挡爵,還有一項

? ? ? ? ? ? ? ? ?信息是常量池竖般,用于存放編譯器生成的各種符號引用。這部分內(nèi)容將在加載后放到方法區(qū)的運行時常量池中茶鹃。

2.虛擬機(jī)棧:描述的是Java方法執(zhí)行的內(nèi)存模型------ 每個方法被執(zhí)行的時候捻激,都會創(chuàng)建一個“棧幀”,用于存儲局部變量表

? ? ? ? ? ? ? ? ? ? (包括參數(shù))前计、操作棧胞谭、方法出口等信息。每個方法被調(diào)用到執(zhí)行完的過程男杈,就對應(yīng)著一個棧幀在虛擬機(jī)棧中從

? ? ? ? ? ? ? ? ? ? 入棧到出棧的過程丈屹。聲明周期與線程相同,是線程私有的伶棒。


? 局部變量表存放了編譯器可知的各種基本數(shù)據(jù)類型(boolean旺垒、byte、char肤无、short先蒋、int、float宛渐、long竞漾、double)

對象引用(引用指針, 并非對象本身)窥翩,其中64位長度的long和double類型的數(shù)據(jù)會占用2個局部變量的空間业岁,其

? ? ? ? ? ? ? ? ? ? 余數(shù)據(jù)類型只占1個。局部變量表所需要的內(nèi)存空間在編譯期間完成分配寇蚊,當(dāng)進(jìn)入一個方法時笔时,這個方法需要在棧幀

? ? ? ? ? ? ? ? ? ? 中分配多大的局部變量是完全確定的,在運行期間棧幀不會改變局部變量表的大小空間仗岸。

3.本地方法棧:與虛擬機(jī)椩使ⅲ基本類似借笙,區(qū)別在與虛擬機(jī)棧為虛擬機(jī)執(zhí)行的java方法服務(wù),而本地方法棧則是為Native方法服務(wù)较锡。

4.堆:也叫做Java堆提澎,GC堆是Java虛擬機(jī)所管理的內(nèi)存中最大的一塊內(nèi)存區(qū)域,也是被各個線程共享的內(nèi)存區(qū)域念链,在JVM啟動時創(chuàng)建

? ? ? ? ? 該內(nèi)存區(qū)域存放了對象實例及數(shù)組(所有new的對象)盼忌。其大小通過-Xms(最小值)和-Xmx(最大值)參數(shù)設(shè)置,-Xms為JVM

? ? ? ? ? 啟動時申請的最小內(nèi)存掂墓,默認(rèn)為操作系統(tǒng)物理內(nèi)存的1/64但小于1G谦纱,-Xmx為JVM可申請的最大內(nèi)存,默認(rèn)為物理內(nèi)存的1/4單

小于1G,默認(rèn)當(dāng)空余堆內(nèi)存小于40%時君编,JVM會增大Heap到-Xmx指定的大下跨嘉,可以通過-XX:MinHeapFreeRation =來指定這個

比例;當(dāng)空余堆內(nèi)存大于70%時吃嘿,JVM會減少heap的大小到-Xms指定的大小祠乃,可通過XX:MAxHeapFreeRation= 來指定這個比例

對于運行系統(tǒng),為避免在運行時頻繁調(diào)整Heap的大小兑燥,通常-Xms和-Xmx的值設(shè)成一樣亮瓷。


由于現(xiàn)在收集器都是采用分代收集算法,堆被劃分為新生代和老年代降瞳。新生代主要存儲新創(chuàng)建的對象和未進(jìn)入老年代的對象嘱支。老年

? ? ? ? ? ?代存儲經(jīng)過多次新生代GC(Minor GC)任然存活的對象。

新生代:程序心漸漸的對象都是從新生代分配內(nèi)存的挣饥。新生代由Eden Space和兩塊相同大小的Survivor Space(通常又稱S0和S1

? ? ? ? ? ? ? ? ? ? ? ? ?或者From和To)構(gòu)成除师,可通過-Xmn參數(shù)來指定新生代的大小,也可以通過-XX:SurvivorRation來調(diào)整Eden Space

? ? ? ? ? ? ? ? ? ? ? ? 及SurvivorSpace的大小扔枫。

? ? ? ? ?老年代:用于存放經(jīng)過多次新生代GC任然存活的對象汛聚,例如緩存對象,新建的對象也有可能直接進(jìn)入老年代短荐,主要有兩種

? ? ? ? ? ? ? ? ? ? ?情況:①.大對象倚舀,可 通過啟動參數(shù)設(shè)置-XX:PretenureSizeThreshold=1024(單位為字節(jié),默認(rèn)為0)來代表超過

? ? ? ? ? ? ? ? ? ? ?多大時就不在新生代分配搓侄,而是直接在老年代分配瞄桨。②.大的數(shù)組對象,切數(shù)組中無引用外部對象讶踪。

5.程序計數(shù)器:是最小的一塊內(nèi)存區(qū)域泊交,他的作用是當(dāng)前線程執(zhí)行的字節(jié)碼的行號指示器乳讥,在虛擬機(jī)的模型里柱查,字節(jié)碼解釋器工作時

? ? ? ? ? ? ? ? ? ? ? ? 就是通過改變這個計數(shù)器的值來選去嚇一跳需要執(zhí)行的字節(jié)碼指令、分支云石、循環(huán)唉工、異常處理、先生回復(fù)等基礎(chǔ)功能都需要

? ? ? ? ? ? ? ? ? ? ? ? 依賴計數(shù)器完成汹忠。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末淋硝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子宽菜,更是在濱河造成了極大的恐慌谣膳,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铅乡,死亡現(xiàn)場離奇詭異继谚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)阵幸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門花履,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人挚赊,你說我怎么就攤上這事诡壁。” “怎么了荠割?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵欢峰,是天一觀的道長。 經(jīng)常有香客問我涨共,道長纽帖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任举反,我火速辦了婚禮懊直,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘火鼻。我一直安慰自己室囊,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布魁索。 她就那樣靜靜地躺著融撞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪粗蔚。 梳的紋絲不亂的頭發(fā)上尝偎,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼致扯。 笑死肤寝,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抖僵。 我是一名探鬼主播鲤看,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼耍群!你這毒婦竟也來了义桂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤蹈垢,失蹤者是張志新(化名)和其女友劉穎慷吊,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耘婚,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡罢浇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了沐祷。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嚷闭。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赖临,靈堂內(nèi)的尸體忽然破棺而出胞锰,到底是詐尸還是另有隱情,我是刑警寧澤兢榨,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布嗅榕,位于F島的核電站,受9級特大地震影響吵聪,放射性物質(zhì)發(fā)生泄漏凌那。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一吟逝、第九天 我趴在偏房一處隱蔽的房頂上張望帽蝶。 院中可真熱鬧,春花似錦块攒、人聲如沸励稳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驹尼。三九已至,卻和暖如春庞呕,著一層夾襖步出監(jiān)牢的瞬間新翎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留料祠,地道東北人骆捧。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓澎羞,卻偏偏與公主長得像髓绽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子妆绞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 內(nèi)存溢出和內(nèi)存泄漏的區(qū)別 內(nèi)存溢出:out of memory顺呕,是指程序在申請內(nèi)存時,沒有足夠的內(nèi)存空間供其使用括饶,...
    Aimerwhy閱讀 744評論 0 1
  • Java 虛擬機(jī)有自己完善的硬件架構(gòu), 如處理器株茶、堆棧、寄存器等图焰,還具有相應(yīng)的指令系統(tǒng)启盛。JVM 屏蔽了與具體操作系...
    尹小凱閱讀 1,695評論 0 10
  • 文章轉(zhuǎn)自 http://blog.csdn.net/u012152619/article/details/4696...
    云狗狗狗狗狗閱讀 611評論 1 4
  • JVM有哪些分區(qū)?程序計數(shù)器技羔,java虛擬機(jī)棧僵闯,本地方法棧,堆藤滥,方法區(qū)鳖粟。 java棧中存放的是一個個棧幀,每一個棧...
    irckwk1閱讀 697評論 0 0
  • jvm:Java Virtual Machine(Java虛擬機(jī)的縮寫)是java實現(xiàn)跨平臺的核心支持拙绊,鏈接硬件和...
    4ea0af17fd67閱讀 628評論 0 0