當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]JVM堆內(nèi)存被分為兩部分——年輕代(Young Generation)和老年代(Old Generation)年輕代 年輕代是所有新對(duì)象產(chǎn)生的地方。當(dāng)年輕代內(nèi)存空間被用完時(shí),就會(huì)觸發(fā)垃圾回收(Mino

JVM堆內(nèi)存被分為兩部分——年輕代(Young Generation)和老年代(Old Generation)

年輕代 年輕代是所有新對(duì)象產(chǎn)生的地方。當(dāng)年輕代內(nèi)存空間被用完時(shí),就會(huì)觸發(fā)垃圾回收(Minor GC)。年輕代被分為3個(gè)部分-Enden區(qū)和兩個(gè)Survivor區(qū)。
1.大多數(shù)新建的對(duì)象都位于Eden區(qū)
2.當(dāng)Eden區(qū)被對(duì)象填滿時(shí),就會(huì)執(zhí)行Minor GC,并把所有存活下來(lái)的對(duì)象轉(zhuǎn)移到其中一個(gè)survivor區(qū)。
3.Minor GC同樣會(huì)檢查存活下來(lái)的對(duì)象,并把它們轉(zhuǎn)移到另一個(gè)survivor區(qū)。這樣在一段時(shí)間內(nèi),總會(huì)有一個(gè)空的survivor區(qū)。
4.經(jīng)過(guò)多次GC周期后,仍然存活下來(lái)的對(duì)象會(huì)被轉(zhuǎn)移到年老代內(nèi)存空間。通常這是在年輕代有資格提升到年老代前通過(guò)設(shè)定年齡閾值來(lái)完成的。 年老代 年老代內(nèi)存里包含了長(zhǎng)期存活的對(duì)象和經(jīng)過(guò)多次Minor GC后依然存活下來(lái)的對(duì)象。通常會(huì)在老年代內(nèi)存被占滿時(shí)進(jìn)行垃圾回收。老年代的垃圾收集叫做Major GC。Major GC會(huì)花費(fèi)更多的時(shí)間。 Stop the World事件 所有的垃圾收集都是“Stop the World”事件,因?yàn)樗械膽?yīng)用線程都會(huì)停下來(lái)直到操作完成(所以叫“Stop the World”)。


因?yàn)槟贻p代里的對(duì)象都是一些臨時(shí)(short-lived )對(duì)象,執(zhí)行Minor GC非???,所以應(yīng)用不會(huì)受到(“Stop the World”)影響。


由于Major GC會(huì)檢查所有存活的對(duì)象,因此會(huì)花費(fèi)更長(zhǎng)的時(shí)間。應(yīng)該盡量減少M(fèi)ajor GC。因?yàn)镸ajor GC會(huì)在垃圾回收期間讓你的應(yīng)用反應(yīng)遲鈍,所以如果你有一個(gè)需要快速響應(yīng)的應(yīng)用發(fā)生多次Major GC,你會(huì)看到超時(shí)錯(cuò)誤。


垃圾回收時(shí)間取決于垃圾回收策略。這就是為什么有必要去監(jiān)控垃圾收集和對(duì)垃圾收集進(jìn)行調(diào)優(yōu)。從而避免要求快速響應(yīng)的應(yīng)用出現(xiàn)超時(shí)錯(cuò)誤。 永久代 永久代或者“Perm Gen”包含了JVM需要的應(yīng)用元數(shù)據(jù),這些元數(shù)據(jù)描述了在應(yīng)用里使用的類(lèi)和方法。注意,永久代不是Java堆內(nèi)存的一部分。
永久代存放JVM運(yùn)行時(shí)使用的類(lèi)。永久代同樣包含了Java SE庫(kù)的類(lèi)和方法。永久代的對(duì)象在full GC時(shí)進(jìn)行垃圾收集。
方法區(qū) 方法區(qū)是永久代空間的一部分,并用來(lái)存儲(chǔ)類(lèi)型信息(運(yùn)行時(shí)常量和靜態(tài)變量)和方法代碼和構(gòu)造函數(shù)代碼。
內(nèi)存池 如果JVM實(shí)現(xiàn)支持,JVM內(nèi)存管理會(huì)為創(chuàng)建內(nèi)存池,用來(lái)為不變對(duì)象創(chuàng)建對(duì)象池。字符串池就是內(nèi)存池類(lèi)型的一個(gè)很好的例子。內(nèi)存池可以屬于堆或者永久代,這取決于JVM內(nèi)存管理的實(shí)現(xiàn)。
運(yùn)行時(shí)常量池 運(yùn)行時(shí)常量池是每個(gè)類(lèi)常量池的運(yùn)行時(shí)代表。它包含了類(lèi)的運(yùn)行時(shí)常量和靜態(tài)方法。運(yùn)行時(shí)常量池是方法區(qū)的一部分
Java棧內(nèi)存 Java棧內(nèi)存用于運(yùn)行線程。它們包含了方法里的臨時(shí)數(shù)據(jù)、堆里其它對(duì)象引用的特定數(shù)據(jù)
Java 堆內(nèi)存開(kāi)關(guān) Java提供了大量的內(nèi)存開(kāi)關(guān)(參數(shù)),我們可以用它來(lái)設(shè)置內(nèi)存大小和它們的比例。

-Xms 設(shè)置JVM啟動(dòng)時(shí)堆的初始化大小。?
-Xmx 設(shè)置堆最大值。?
-Xmn 設(shè)置年輕代的空間大小,剩下的為老年代的空間大小。?
-XX:PermGen 設(shè)置永久代內(nèi)存的初始化大小。?
-XX:MaxPermGen 設(shè)置永久代的最大值。?
-XX:SurvivorRatio 提供Eden區(qū)和survivor區(qū)的空間比例 如果年輕代的大小為10m并且VM開(kāi)關(guān)是-XX:SurvivorRatio=2,那么將會(huì)保留5m內(nèi)存給Eden區(qū)和每個(gè)Survivor區(qū)分配2.5m內(nèi)存。默認(rèn)比例是8。?
-XX:NewRatio 提供年老代和年輕代的比例大小。默認(rèn)值是2
Java垃圾回收 Java垃圾回收會(huì)找出沒(méi)用的對(duì)象,把它從內(nèi)存中移除并釋放出內(nèi)存給以后創(chuàng)建的對(duì)象使用,自動(dòng)垃圾回收。
垃圾收集器是一個(gè)后臺(tái)運(yùn)行程序。它管理著內(nèi)存中的所有對(duì)象并找出沒(méi)被引用的對(duì)象。所有的這些未引用的對(duì)象都會(huì)被刪除,回收它們的空間并分配給其他對(duì)象。
一個(gè)基本的垃圾回收過(guò)程涉及三個(gè)步驟: 標(biāo)記:這是第一步。在這一步,垃圾收集器會(huì)找出哪些對(duì)象正在使用和哪些對(duì)象不在使用。
正常清除:垃圾收集器會(huì)清除不在使用的對(duì)象,回收它們的空間分配給其他對(duì)象。
壓縮清除:為了提升性能,壓縮清除會(huì)在刪除沒(méi)用的對(duì)象后,把所有存活的對(duì)象移到一起。這樣可以提高分配新對(duì)象的效率。
簡(jiǎn)單標(biāo)記和清除方法存在兩個(gè)問(wèn)題: 效率很低。因?yàn)榇蠖鄶?shù)新建對(duì)象都會(huì)成為“沒(méi)用對(duì)象”。
經(jīng)過(guò)多次垃圾回收周期的對(duì)象很有可能在以后的周期也會(huì)存活下來(lái)。
上面簡(jiǎn)單清除方法的問(wèn)題在于Java垃圾收集的分代回收的,而且在堆內(nèi)存里有年輕代和年老代兩個(gè)區(qū)域 Java垃圾回收類(lèi)型 Serial GC(-XX:+UseSerialGC):Serial GC使用簡(jiǎn)單的標(biāo)記、清除、壓縮方法對(duì)年輕代和年老代進(jìn)行垃圾回收,即Minor GC和Major GC。Serial GC在client模式(客戶(hù)端模式)很有用,比如在簡(jiǎn)單的獨(dú)立應(yīng)用和CPU配置較低的機(jī)器。這個(gè)模式對(duì)占有內(nèi)存較少的應(yīng)用很管用。
Parallel GC(-XX:+UseParallelGC):除了會(huì)產(chǎn)生N個(gè)線程來(lái)進(jìn)行年輕代的垃圾收集外,Parallel GC和Serial GC幾乎一樣。這里的N是系統(tǒng)CPU的核數(shù)。我們可以使用 -XX:ParallelGCThreads=n 這個(gè)JVM選項(xiàng)來(lái)控制線程數(shù)量。并行垃圾收集器也叫throughput收集器。因?yàn)樗褂昧硕郈PU加快垃圾回收性能。Parallel GC在進(jìn)行年老代垃圾收集時(shí)使用單線程。
Parallel Old GC(-XX:+UseParallelOldGC):和Parallel GC一樣。不同之處,Parallel Old GC在年輕代垃圾收集和年老代垃圾回收時(shí)都使用多線程收集。
并發(fā)標(biāo)記清除(CMS)收集器(-XX:+UseConcMarkSweepGC):CMS收集器也被稱(chēng)為短暫停頓并發(fā)收集器。它是對(duì)年老代進(jìn)行垃圾收集的。CMS收集器通過(guò)多線程并發(fā)進(jìn)行垃圾回收,盡量減少垃圾收集造成的停頓。CMS收集器對(duì)年輕代進(jìn)行垃圾回收使用的算法和Parallel收集器一樣。這個(gè)垃圾收集器適用于不能忍受長(zhǎng)時(shí)間停頓要求快速響應(yīng)的應(yīng)用??墒褂?-XX:ParallelCMSThreads=n JVM選項(xiàng)來(lái)限制CMS收集器的線程數(shù)量。
G1垃圾收集器(-XX:+UseG1GC) G1(Garbage First):垃圾收集器是在Java 7后才可以使用的特性,它的長(zhǎng)遠(yuǎn)目標(biāo)時(shí)代替CMS收集器。G1收集器是一個(gè)并行的、并發(fā)的和增量式壓縮短暫停頓的垃圾收集器。G1收集器和其他的收集器運(yùn)行方式不一樣,不區(qū)分年輕代和年老代空間。它把堆空間劃分為多個(gè)大小相等的區(qū)域。當(dāng)進(jìn)行垃圾收集時(shí),它會(huì)優(yōu)先收集存活對(duì)象較少的區(qū)域,因此叫“Garbage First”。你可以在Oracle Garbage-FIrst收集器文檔找到更多詳細(xì)信息。 Java垃圾收集監(jiān)控

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉