JVM內(nèi)存管理

內(nèi)存管理

  1. Java棧區(qū)(內(nèi)存管理中最重要的模塊)

作用: 它存放的是Java方法執(zhí)行時的所有的數(shù)據(jù)

棧區(qū)由棧幀組成晶丘,一個棧幀代表一個方法的執(zhí)行

這就解釋了為什么棧可以完整的描述java中的方法嵌套調(diào)用

  1. Java棧幀

    作用:每個方法從調(diào)用到執(zhí)行完成就對應(yīng)一個棧幀在虛擬機(jī)棧中入棧到出棧的一個過程

    舉個栗子:
    比如A方法運行時要調(diào)用B方法,在A方法中執(zhí)行到調(diào)用B的那條語句時塔次,Java虛擬機(jī)會創(chuàng)建一個保存B方法的一個棧幀益缎,然后被壓入Java棧區(qū)中遇伞,當(dāng)B方法執(zhí)行完之后掂名,棧幀從Java棧區(qū)中彈出据沈。

    棧幀主要包括:

    • 局部變量表
    • 棧操作數(shù)
    • 動態(tài)鏈接
    • 方法出口

    異常 stackoverflow 就是在棧區(qū)中出現(xiàn)的,出現(xiàn)的原因:當(dāng)棧的深度大于JVM所允許的最大深度時

    模擬異常饺蔑,寫一個沒有退出的遞歸函數(shù)

    public class Digui {
        public static void main(String[] args){
        System.out.println("輸入一個整數(shù):");  
        Scanner scan = new Scanner(System.in);  
        int x = scan.nextInt();  
        judgePrime(x);
    }
    
    static void judgePrime(int n) {
        judgePrime(n+1);
    
        }  
    }
    

    會產(chǎn)生異常

    Exception in thread "main" java.lang.StackOverflowError
    
  2. 本地方法棧

    本地方法棧是專門為native方法服務(wù)的

  3. 方法區(qū)

    作用:存儲被虛擬機(jī)加載的類信息锌介、常量、靜態(tài)變量猾警、即時編譯器編譯后等數(shù)據(jù)

    特點:主要存儲編譯期所要保存的信息孔祸,永遠(yuǎn)占據(jù)內(nèi)存

  4. 堆區(qū)

    作用:所有通過new創(chuàng)建的對象的內(nèi)存都在堆中分配

    特點:是虛擬機(jī)中最大的一塊內(nèi)存,是GC要回收的部分

    堆區(qū)內(nèi)容分配:

    新生代:新建的對象都是用新生代分配內(nèi)存

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

    當(dāng)Eden空間不足的時候发皿,java虛擬機(jī)會通過一系列的算法和規(guī)則崔慧,會把存活的對象轉(zhuǎn)移到老生代區(qū),當(dāng)新生代和老生代都沒有足夠的存儲時穴墅,這個時候JVM會拋出OOM異常惶室,并且垃圾回收器會重點回收新生代和老生代的內(nèi)存區(qū)域

    開發(fā)人員可以根據(jù)自己項目的需求去動態(tài)的調(diào)整新生代和老生代的區(qū)域大小。

    舉個栗子

    在做即時通信的應(yīng)用時玄货,因為臨時消息會比較多皇钞,所以可以將新生代的區(qū)域調(diào)大,老生代的區(qū)域調(diào)小松捉,這樣便于內(nèi)存的分配夹界,加快對象的創(chuàng)建。如果開發(fā)大型服務(wù)類程序時惩坑,可以將新生代的區(qū)域調(diào)小掉盅,老生代的區(qū)域調(diào)大,達(dá)到對象常駐內(nèi)存的效果以舒,增加服務(wù)器的穩(wěn)定性趾痘。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蔓钟,隨后出現(xiàn)的幾起案子永票,更是在濱河造成了極大的恐慌,老刑警劉巖滥沫,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侣集,死亡現(xiàn)場離奇詭異,居然都是意外死亡兰绣,警方通過查閱死者的電腦和手機(jī)世分,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缀辩,“玉大人臭埋,你說我怎么就攤上這事踪央。” “怎么了瓢阴?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵畅蹂,是天一觀的道長。 經(jīng)常有香客問我荣恐,道長液斜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任叠穆,我火速辦了婚禮少漆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘痹束。我一直安慰自己检疫,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布祷嘶。 她就那樣靜靜地躺著,像睡著了一般夺溢。 火紅的嫁衣襯著肌膚如雪论巍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天风响,我揣著相機(jī)與錄音嘉汰,去河邊找鬼。 笑死状勤,一個胖子當(dāng)著我的面吹牛鞋怀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播持搜,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼密似,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了葫盼?” 一聲冷哼從身側(cè)響起残腌,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贫导,沒想到半個月后抛猫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡孩灯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年闺金,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片峰档。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡败匹,死狀恐怖匣距,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情哎壳,我是刑警寧澤毅待,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站归榕,受9級特大地震影響尸红,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刹泄,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一外里、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧特石,春花似錦盅蝗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至逞敷,卻和暖如春狂秦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背推捐。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工裂问, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人牛柒。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓堪簿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親皮壁。 傳聞我的和親對象是個殘疾皇子椭更,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,860評論 2 361

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