JVM內(nèi)存詳解--堆和棧

JVM內(nèi)存組成結(jié)構(gòu)

JVM棧由堆、棧、本地方法棧穆刻、方法區(qū)等部分組成

1)堆

所有通過new創(chuàng)建的對象的內(nèi)存都在堆中分配喂饥,其大小可以通過-Xmx和-Xms來控制消约。堆被劃分為新生代和舊生代,新生代又被進一步劃分為Eden和Survivor區(qū)员帮,最后Survivor由From Space和To Space組成

新生代或粮。新建的對象都是用新生代分配內(nèi)存,Eden空間不足的時候集侯,會把存活的對象轉(zhuǎn)移到Survivor中被啼,新生代大小可以由-Xmn來控制,也可以用-XX:SurvivorRatio來控制Eden和Survivor的比例

舊生代棠枉。用于存放新生代中經(jīng)過多次垃圾回收仍然存活的對象

2)棧

每個線程執(zhí)行每個方法的時候都會在棧中申請一個棧幀浓体,每個棧幀包括局部變量區(qū)和操作數(shù)棧,用于存放此次方法調(diào)用過程中的臨時變量辈讶、參數(shù)和中間結(jié)果

3)本地方法棧

用于支持native方法的執(zhí)行命浴,存儲了每個native方法調(diào)用的狀態(tài)

4)方法區(qū)

存放了要加載的類信息、靜態(tài)變量贱除、final類型的常量生闲、屬性和方法信息。JVM用持久代(Permanet Generation)來存放方法區(qū)月幌,可通過-XX:PermSize和-XX:MaxPermSize來指定最小值和最大值


垃圾回收機制

JVM分別對新生代和舊生代采用不同的垃圾回收機制

新生代的GC:

新生代通常存活時間較短碍讯,因此基于Copying算法來進行回收,所謂Copying算法就是掃描出存活的對象扯躺,并復制到一塊新的完全未使用的空間中捉兴,對應于新生代,就是在Eden和From Space或To Space之間copy录语。新生代采用空閑指針的方式來控制GC觸發(fā)倍啥,指針保持最后一個分配的對象在新生代區(qū)間的位置,當有新的對象要分配內(nèi)存時澎埠,用于檢查空間是否足夠虽缕,不夠就觸發(fā)GC。當連續(xù)分配對象時蒲稳,對象會逐漸從eden到survivor氮趋,最后到舊生代,

JavavisualVM來查看江耀,能明顯觀察到新生代滿了后凭峡,會把對象轉(zhuǎn)移到舊生代,然后清空繼續(xù)裝載决记,當舊生代也滿了后,就會報outofmemory的異常

在執(zhí)行機制上JVM提供了串行GC(Serial GC)倍踪、并行回收GC(Parallel Scavenge)和并行GC(ParNew)

1)串行GC

在整個掃描和復制過程采用單線程的方式來進行系宫,適用于單CPU索昂、新生代空間較小及對暫停時間要求不是非常高的應用上,是client級別默認的GC方式扩借,可以通過-XX:+UseSerialGC來強制指定

2)并行回收GC

在整個掃描和復制過程采用多線程的方式來進行椒惨,適用于多CPU、對暫停時間要求較短的應用上潮罪,是server級別默認采用的GC方式康谆,可用-XX:+UseParallelGC來強制指定,用-XX:ParallelGCThreads=4來指定線程數(shù)

3)并行GC

與舊生代的并發(fā)GC配合使用

舊生代的GC:

舊生代與新生代不同嫉到,對象存活的時間比較長沃暗,比較穩(wěn)定,因此采用標記(Mark)算法來進行回收何恶,所謂標記就是掃描出存活的對象孽锥,然后再進行回收未被標記的對象,回收后對用空出的空間要么進行合并细层,要么標記出來便于下次進行分配惜辑,總之就是要減少內(nèi)存碎片帶來的效率損耗。在執(zhí)行機制上JVM提供了串行GC(Serial MSC)疫赎、并行GC(parallel MSC)和并發(fā)GC(CMS)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盛撑,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子捧搞,更是在濱河造成了極大的恐慌抵卫,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件实牡,死亡現(xiàn)場離奇詭異陌僵,居然都是意外死亡,警方通過查閱死者的電腦和手機创坞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門碗短,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人题涨,你說我怎么就攤上這事偎谁。” “怎么了纲堵?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵巡雨,是天一觀的道長。 經(jīng)常有香客問我席函,道長铐望,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮正蛙,結(jié)果婚禮上督弓,老公的妹妹穿的比我還像新娘。我一直安慰自己乒验,他們只是感情好愚隧,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锻全,像睡著了一般狂塘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鳄厌,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天荞胡,我揣著相機與錄音,去河邊找鬼部翘。 笑死硝训,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的新思。 我是一名探鬼主播窖梁,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼夹囚!你這毒婦竟也來了纵刘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤荸哟,失蹤者是張志新(化名)和其女友劉穎假哎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鞍历,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡舵抹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了劣砍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惧蛹。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖刑枝,靈堂內(nèi)的尸體忽然破棺而出香嗓,到底是詐尸還是另有隱情,我是刑警寧澤装畅,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布靠娱,位于F島的核電站,受9級特大地震影響掠兄,放射性物質(zhì)發(fā)生泄漏像云。R本人自食惡果不足惜锌雀,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苫费。 院中可真熱鬧汤锨,春花似錦、人聲如沸百框。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铐维。三九已至,卻和暖如春慎菲,著一層夾襖步出監(jiān)牢的瞬間嫁蛇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工露该, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留睬棚,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓解幼,卻偏偏與公主長得像抑党,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蒋搜,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

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

  • JVM架構(gòu) 當一個程序啟動之前乎澄,它的class會被類裝載器裝入方法區(qū)(Permanent區(qū))鳖眼,執(zhí)行引擎讀取方法區(qū)的...
    cocohaifang閱讀 1,650評論 0 7
  • 原文閱讀 前言 這段時間懈怠了,罪過暑中! 最近看到有同事也開始用上了微信公眾號寫博客了,挺好的~給他們點贊鲫剿,這博客我...
    碼農(nóng)戲碼閱讀 5,952評論 2 31
  • 一 鳄逾、java虛擬機底層結(jié)構(gòu)詳解 我們知道,一個JVM實例的行為不光是它自己的事灵莲,還涉及到它的子系統(tǒng)雕凹、存儲區(qū)域、...
    葡萄喃喃囈語閱讀 1,479評論 0 4
  • 轉(zhuǎn)載blog.csdn.net/ning109314/article/details/10411495/ JVM工...
    forever_smile閱讀 5,356評論 1 56
  • 1.一些概念 1.1.數(shù)據(jù)類型 Java虛擬機中笆呆,數(shù)據(jù)類型可以分為兩類:基本類型和引用類型请琳。基本類型的變量保存原始...
    落落落落大大方方閱讀 4,524評論 4 86