中文字幕av高清_国产视频一二区_男女羞羞羞视频午夜视频_成人精品一区_欧美色视_在线视频这里只有精品

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Java 并發(fā)編程解析 |Java GC垃圾回收

Java 并發(fā)編程解析 |Java GC垃圾回收

來源:千鋒教育
發(fā)布人:qyf
時間: 2022-08-03 15:03:41 1659510221

1

  Java 虛擬機提供了一系列的垃圾回收機制(Garbage Collection),又或者說是垃圾回收器(Garbage Collector),其中常見的垃圾回收器如下:

  Serial GC(Serial Garbage Collection):第一代GC,是1999年在JDK1.3中發(fā)布的串行方式的單線程GC。一般適用于 最小化地使用內(nèi)存和并行開銷的場景。

  Parallel GC(Parallel Garbage Collection):第二代GC,是2002年在JDK1.4.2中發(fā)布的,相比Serial GC,基于多線程方式加速運行垃圾回收,在JDK6版本之后成為Hotspot VM的默認GC。一般是最大化應用程序的吞吐量。

  CMS GC(Concurrent Mark Sweep Garbage Collection ):第二代GC,是2002年在JDK1.4.2中發(fā)布的,相比Serial GC,基于多線程方式加速運行垃圾回收,可以讓應用程序和GC分享處理器資源的GC。一般是最小化GC的中斷和停頓時間的場景。

  G1 GC (Garbage First Garbage Collection):第三代GC,是JDK7版本中誕生的一個并行回收器,主要是針對“垃圾優(yōu)先”的原則而誕生的GC,也是時下我們比較新的GC。

  在常見的垃圾回收中,我們一般采用引用計數(shù)法和可達性分析兩種方式來確定垃圾是否產(chǎn)生,其中:

  引用計數(shù)法:在Java中,引用和對象是有關聯(lián)的。如果要操作對象則必須用引用進行。因此,很顯然一個簡單的辦法是通過引用計數(shù)來判斷一個對象是否可以回收。簡單說,即一個對象如果沒有任何與之關聯(lián)的引用,即他們的引用計數(shù)都不為0,則說明對象不太可能再被用到,那么這個對象就是可回收對象。

  可達性分析(根搜索算法):為了解決引用計數(shù)法的循環(huán)引用問題,Java使用了可達性分析的方法。通過一系列的“GC roots”對象作為起點搜索。如果在“GC roots”和一個對象之間沒有可達路徑,則稱該對象是不可達的。要注意的是,不可達對象不等價于可回收對象,不可達對象變?yōu)榭苫厥諏ο笾辽僖?jīng)過兩次標記過程。兩次標記后仍然是可回收對象,則將面臨回收。

  一般來說,當成功區(qū)分出內(nèi)存中存活對象和死亡對象之后,GC接著就會執(zhí)行垃圾回收,釋放掉無用對象所占用的內(nèi)存空間,以便有足夠可用的內(nèi)存空間為新的對象分配內(nèi)存。

  目前,在JVM中采用的垃圾收集算法主要有:

  標記-清除算法(Mark-Sweep ): 最基礎的垃圾回收算法,分為兩個階段,標注和清除。標記階段標記出所有需要回收的對象,清除階段回收被標記的對象所占用的空間。該算法最大的問題是內(nèi)存碎片化嚴重,后續(xù)可能發(fā)生大對象不能找到可利用空間的問題。

  復制算法(Copying): 為了解決Mark-Sweep算法內(nèi)存碎片化的缺陷而被提出的算法。按內(nèi)存容量將內(nèi)存劃分為等大小的兩塊。每次只使用其中一塊,當這一塊內(nèi)存滿后將尚存活的對象復制到另一塊上去,把已使用的內(nèi)存清掉。這種算法雖然實現(xiàn)簡單,內(nèi)存效率高,不易產(chǎn)生碎片,但是最大的問題是可用內(nèi)存被壓縮到了原本的一半。且存活對象增多的話,Copying算法的效率會大大降低。

  標記-壓縮算法(Mark-Compact): 為了避免缺陷而提出。標記階段和Mark-Sweep算法相同,標記后不是清理對象,而是將存活對象移向內(nèi)存的一端,然后清除端邊界外的對象。

  增量算法(Incremental Collecting): 也可以成為分區(qū)收集算法(Region Collenting),將整個堆空間劃分為連續(xù)的不同小區(qū)間, 每個小區(qū)間獨立使用, 獨立回收. 這樣做的好處是可以控制一次回收多少個小區(qū)間 , 根據(jù)目標停頓時間, 每次合理地回收若干個小區(qū)間(而不是整個堆), 從而減少一次GC所產(chǎn)生的停頓。

  分代收集算法(Generational Collenting): 是目前大部分JVM所采用的方法,其核心思想是根據(jù)對象存活的不同生命周期將內(nèi)存劃分為不同的域,一般情況下將GC堆劃分為老生代(Tenured/Old Generation)和新生代(Young Generation)。老生代的特點是每次垃圾回收時只有少量對象需要被回收,新生代的特點是每次垃圾回收時都有大量垃圾需要被回收,因此可以根據(jù)不同區(qū)域選擇不同的算法。

  更多關于“java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業(yè)需求,更科學更嚴謹,每年培養(yǎng)泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 日韩欧美一级在线 | 日韩精品视频国产 | 精品久久久久久久久久久 | 色涩涩 | 日韩一区在线视频 | 国产精品第一国产精品 | 狠狠色丁香九九婷婷综合五月 | 看片一区 | 国产91久久精品 | 理论片91 | 欧美色涩 | 亚洲欧美国产一区二区三区 | 精品国产一区二区三区四区 | 精品成人佐山爱一区二区 | 国产精品成人免费一区二区视频 | 久久久久久久久久久九 | 精品久久久久久久久久久 | 在线视频久久 | 日本黄色一级片视频 | 国产精品一区人伦免视频播放 | 国产日韩视频在线播放 | 国产一级特黄aaa大片评分 | 国产日韩精品在线观看 | 综合久久久| 久久aⅴ国产欧美74aaa | 天天射天天 | 特级做a爰片毛片免费看108 | www.9191| 爱啪导航一精品导航站 | 97久久精品人人做人人爽50路 | 99久久综合国产精品二区 | 日日夜夜狠狠 | 男插男视频 | 高清国产视频 | 中文字幕一区日韩精品欧美 | 国产一区二区三区久久久 | 欧美一区二区三区的 | 国产成人精品999在线观看 | 秋霞毛片 | 免费看的黄网站 | 国产成人午夜视频 |