JAVA GC機制一

首先在這里給大家推薦《深入理解jvm虛擬機》這本書,我只是一名搬用工
GC 全稱:Garbage Collections, java的垃圾回收機制,目的是為了不需要像C語言一樣由開發(fā)人員來對內(nèi)存進行維護和釋放,由系統(tǒng)來動態(tài)的分配內(nèi)存,避免內(nèi)存溢出

java虛擬機在執(zhí)行java程序的過程中會把它所管理的內(nèi)存劃分為若干個不同的數(shù)據(jù)區(qū)域

1運行時數(shù)據(jù)區(qū)域

每個線程單獨存儲,互不影響

1、程序計數(shù)器

2、java虛擬機棧

3、本地方法棧

各個線程共同持有

4、方法區(qū) 5、java堆

1、程序計數(shù)器

程序計數(shù)器(Program Counter Register)是一塊較小的內(nèi)存空間,它的作用可以看 做是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號指示器。 如果線程正在執(zhí)行的是一個Java方法,這個計數(shù)器記錄的是正在執(zhí)行的虛擬機字節(jié) 碼指令的地址;如果正在執(zhí)行的是Natvie方法,這個計數(shù)器值則為空(Undefined )。此 內(nèi)存區(qū)域是唯一一個在Java虛擬機規(guī)范中沒有規(guī)定任何DutDfMemoryError情況的區(qū)域。

2、 Java虛擬機棧

與程序計數(shù)器一樣,Java虛擬機棧(Java Virtual Machine Stacks)也是線程私有的, 它的生命周期與線程相同。虛擬機棧描述的是Java方法執(zhí)行的內(nèi)存模型:每個方法被執(zhí) 行的時候都會同時創(chuàng)建一個棧幀( Stack Frame)用干存儲局部變量表、操作棧、動態(tài) 鏈接、方法出口等信息。每一個方法被調(diào)用直至執(zhí)行完成的過程,就對應(yīng)著一個棧幀在 虛擬機棧中從入棧到出棧的過程。
“?!本褪翘摂M機棧中的局部變 量表部分。
局部變量表存放了編譯期可知的各種基本數(shù)據(jù)類型(hoolean, byte, char. short.int, float, long, double)、對象引用(reference類型,它不等同于對象本身,根據(jù)不同的虛擬機實現(xiàn) 。局部變量表所需的內(nèi)存空間在編譯期間完成分配,當(dāng)進入一個 方法時一,這個方法需要在幀中分配多大的局部變量空間是完全確定的,在方法運行期間 不會改變局部變量表的大小。

3本地方法棧

木地方法棧C Native Method Stacks)與虛擬機棧所發(fā)揮的作用是非常相似的,其 區(qū)別不過是虛擬機棧為虛擬機執(zhí)行Java方法(也就是字節(jié)碼)服務(wù),而本地方法棧則 是為虛擬機使用到的Native方法服務(wù)

4 Java堆

對于大多數(shù)應(yīng)用來說,Java堆 ( Java Heap )是Java虛擬機所管理的內(nèi)存中最大的 一塊。Java堆是被所有線程共享的一塊內(nèi)存區(qū)域,在虛擬機啟動時創(chuàng)建。此內(nèi)存區(qū)域的 唯一目的就是存放對象實例,<font color=#FF0000 size=3>幾乎所有的對象實例都在這里分配內(nèi)存</font>。這一點在Java虛 擬機規(guī)范中的描述是:所有的對象實例以及數(shù)組都要在堆上分配,但是隨著JIT編譯器 的發(fā)展與逃逸分析技術(shù)的逐漸成熟,棧上分配、標(biāo)量替換優(yōu)化技術(shù)將會導(dǎo)致一些微妙 的變化發(fā)生,所有的對象都分配在堆上也漸漸變得不是那么“絕對”了

Java堆是垃圾收集器管理的主要區(qū)域,因此很多時候也被稱做“GC堆”。如果從內(nèi)存回收的角度看,由于現(xiàn)在 收集器從本都是采用的分代收集算法,所以Java堆中還可以細(xì)分為:新生代和老年代; 再細(xì)致一點的有Eden空間、From Survivor空間、To Survivor空間等。如果從內(nèi)存分配

5方法區(qū)

方法區(qū)(Method Area)與Java堆樣,是各個線程共享的內(nèi)存區(qū)域,‘<font color=#FF0000 size=3>用于存 儲已被虛擬機加載的類信息、常量、靜態(tài)變量、即時編譯器編譯后的代碼等數(shù)據(jù)</font>。雖 然lava虛擬機規(guī)范把方法區(qū)描述為堆的一個邏輯部分,但是它卻有一個別名叫做Non- Heap(非堆),目的應(yīng)該是與lava堆區(qū)分開來。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 從三月份找實習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,767評論 11 349
  • 第二部分 自動內(nèi)存管理機制 第二章 java內(nèi)存異常與內(nèi)存溢出異常 運行數(shù)據(jù)區(qū)域 程序計數(shù)器:當(dāng)前線程所執(zhí)行的字節(jié)...
    小明oh閱讀 1,275評論 0 2
  • 此文是一位60多歲的老人的成功經(jīng)驗,他原有老花及近視,做這個穴道按壓半年后去驗視力已達(dá)1.2,現(xiàn)在他已不帶眼鏡。 ...
    貴州新目標(biāo)閱讀 590評論 0 4
  • 姚明球衣今天退役,看直播的時候很感動,那真的算我的青春,姚麥時代的火箭,給我留下了太多太珍貴的回憶。翻開以往...
    陌陽魂閱讀 461評論 0 0
  • 秋風(fēng) 他像一個暴戾恣睢的君主 大袖隨便一揮舞 那些枝頭的綠葉啊 索索變了色 黃葉紅葉枯葉瑟瑟飄落 唯有這嬌小的桂花...
    兔巴葛閱讀 337評論 2 2

友情鏈接更多精彩內(nèi)容