JVM進(jìn)階(十三)——階段回顧

      網(wǎng)友投稿 654 2025-04-04

      #JVM進(jìn)階(十三)——階段回顧


      各位小伙伴,到上一篇博文為止,我們的內(nèi)存模型相關(guān)知識(shí)就已經(jīng)講完了!講!完!了!不知道大家吸收了多少,這里我們簡(jiǎn)單的來回顧一下吧!

      內(nèi)存基本分為JAVA棧、本地方法棧、堆和方法區(qū)。

      首先棧存放的是基本類型變量,局部變量,和對(duì)象的引用,他在內(nèi)存中是一塊連續(xù)的區(qū)域,有大小限制,是由系統(tǒng)自動(dòng)分配的,因此它的讀寫速度比較快,而且會(huì)自動(dòng)釋放掉為該變量所分配的內(nèi)存空間;還有一點(diǎn)就是他還存放線程調(diào)用方法時(shí)存儲(chǔ)局部變量表,操作,方法出口等與方法執(zhí)行相關(guān)的信息。

      堆的話是存放對(duì)象和數(shù)組;在運(yùn)行時(shí)動(dòng)態(tài)分配內(nèi)存(比如 new()),較慢,但靈活;是不連續(xù)的內(nèi)存區(qū)域,在發(fā)出申請(qǐng)的時(shí)候,系統(tǒng)首先會(huì)遍歷一個(gè)存有空閑地址節(jié)點(diǎn)的鏈表,找到第一個(gè)滿足申請(qǐng)大小的節(jié)點(diǎn),將他從鏈表刪除,并分配給申請(qǐng)者,如果空間剩余,則將多出來的加入鏈表;由Java虛擬機(jī)的自動(dòng)垃圾回收器來管理。分為一個(gè)Eden區(qū)和兩個(gè)Survivor區(qū)。

      方法區(qū)主要存放靜態(tài)變量,常量,全局變量。他的大小不必是固定的,jvm可以根據(jù)應(yīng)用的需要?jiǎng)討B(tài)調(diào)整,同樣方法區(qū)也不必是連續(xù)的。方法區(qū)可以在堆(甚至是虛擬機(jī)自己的堆)中分配。jvm可以允許用戶和程序指定方法區(qū)的初始大小,最小和最大尺寸。因?yàn)榉椒▍^(qū)是被所有線程共享的,所以必須考慮數(shù)據(jù)的線程安全。假如兩個(gè)線程都在試圖找一個(gè)類,在該類還沒有被加載的情況下,只應(yīng)該有一個(gè)線程去加載,而另一個(gè)線程需要等待。

      本地方法棧則是為執(zhí)行Native方法服務(wù),但這個(gè)在不同JVM內(nèi)有不同的內(nèi)部實(shí)現(xiàn),比如在HotSpot JVM中Java虛擬機(jī)棧和本地方法棧被實(shí)現(xiàn)為同一個(gè)棧區(qū)。

      對(duì)于收集方法來說一般有兩種,“復(fù)制”和“標(biāo)記-清除-整理”。“復(fù)制”算法需要留有部分空間用于復(fù)制后的存儲(chǔ),適用于朝生夕死的對(duì)象;“標(biāo)記-清除-整理”適用于年老代,清除后形成邏輯上連續(xù)的區(qū)域,避免了內(nèi)存碎片。

      對(duì)象被回收之前都要先被標(biāo)記為可回收的對(duì)象,一般有引用計(jì)數(shù)和可達(dá)性分析法。JAVA采用的則是可達(dá)性分析,從“GC Roots”開始組建一張張的關(guān)系網(wǎng),不在關(guān)系網(wǎng)上的就會(huì)被清除。標(biāo)記有兩次,因?yàn)楸粯?biāo)記后還可能會(huì)執(zhí)行finalize()方法。“GC Roots”被記錄在OopMap中,能夠讓虛擬機(jī)快速的得到他們,不用遍歷整個(gè)堆來尋找“GC Roots”了。

      回收的時(shí)候需要暫停程序的所有線程,這個(gè)過程叫做STW,我們的程序需要優(yōu)化的時(shí)候,縮短STW也是優(yōu)化的一部分。

      JVM進(jìn)階(十三)——階段回顧

      各種收集器都為縮短STW的時(shí)間提供了不同的策略,并行的、串行的,作用于年輕代的,作用于年老代的,還有作用于整個(gè)堆的。各有各的優(yōu)劣勢(shì),需要搭配使用,不能隨意組合。

      好啦,這一整塊我們算是大概回憶完啦,在后面的博文中我們就要開始講虛擬機(jī)中的類加載機(jī)制了!

      ![這里寫圖片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTYxMjIwMjEwNjM2NzA1?x-oss-process=image/format,png) ![這里寫圖片描述](https://imgconvert.csdnimg.cn/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTYxMjIwMjEwNzMzNDQ2?x-oss-process=image/format,png)

      Java JVM

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:酒店管理系統(tǒng)設(shè)計(jì)(4分鐘之前已更新)
      下一篇:實(shí)用Excel技巧分享:兩種快捷制作工資條的方法(怎樣用excel快速制作工資條)
      相關(guān)文章
      亚洲一本一道一区二区三区| 亚洲第一网站免费视频| 亚洲日本va中文字幕久久| 国产在亚洲线视频观看| 亚洲中文字幕无码爆乳app| 亚洲ts人妖网站| 亚洲sss综合天堂久久久| 亚洲国产日韩在线成人蜜芽 | 久久久无码精品亚洲日韩按摩 | 亚洲av日韩专区在线观看| 97久久国产亚洲精品超碰热| 自拍日韩亚洲一区在线| 亚洲AV无码久久久久网站蜜桃| 亚洲日本va在线观看| 亚洲中文无码永久免| 亚洲经典千人经典日产| 国产精品亚洲AV三区| 亚洲成片观看四虎永久| 亚洲成a人片在线观看国产| 日产国产精品亚洲系列| 亚洲精品NV久久久久久久久久| 亚洲国产成人久久综合野外| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲AV无码一区二区二三区软件| 亚洲大成色www永久网站| 亚洲AV日韩AV天堂久久 | 日韩亚洲国产综合久久久| 亚洲国产一区二区三区| 亚洲精品尤物yw在线影院| 在线亚洲精品自拍| 亚洲AV中文无码字幕色三| 色播亚洲视频在线观看| 亚洲国产日产无码精品| 久久综合久久综合亚洲| 亚洲AV永久无码精品一福利 | 亚洲国产精品成人久久蜜臀| 亚洲日韩人妻第一页| 国产亚洲精品自在久久| 91亚洲一区二区在线观看不卡 | 亚洲一区无码中文字幕乱码| 亚洲日本VA午夜在线电影|