日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JVM-垃圾收集器

發布時間:2023/12/9 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM-垃圾收集器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇主要介紹一下JVM的幾種垃圾收集器。

其示意圖例如以下所看到的,上面的三個是新生代的收集器,

以下三個是老年代的收集器。當中G1收集器是能夠用于新生代和老年代的收集工作。


JVM垃圾收集器

1、Serial(串行收集器):用于新生代GC,復制算法,啟動時默覺得Client模式,GC的線程為單線程。缺點是由于單線程GC,會造成中斷的時間(Sop-the-world)比較大。

(對于單核的CPU來說,比并行收集的效率要高)其示意圖例如以下所看到的:


Serial串行收集器


2、ParNew(并行收集器):與Serial類似,不同點在于它一般用于新生代的并行回收,并且通常情況下執行在Server模式(單核CPU下。性能可能比Serial還要差)。示意圖例如以下所看到的:


ParNew并行收集器

3、Parallel Scavenge(并行回收):用于新生代回收,復制算法,并行收集。

與ParNew的不同是它的關注點不同,它能夠精確的控制吞吐量。【吞吐量= 程序執行時間/(程序執行時間 + 垃圾收集時間),比如:JVM共執行了100min。當中垃圾收集花掉1min,那吞吐量就是99%】示意圖例如以下所看到的:


Parallel Scavenge并行收集

4、Serial Old(串行收集器):是Serial收集器的老年代版本號。使用標記-壓縮(標記-整理)收集算法,主要用于啟動模式為Client的JVM。

示意圖能夠參考Serial串行收集器。

5、Parallel Old(并行收集器):是Parallel的老年代版本號。使用標記-壓縮(標記-整理)收集算法。

其示意圖能夠參考Parallel并行收集。

6、CMS(concurrent mark sweep):并發收集器(發生GC時,GC線程與應用線程同一時候執行)。是一種以最短響應為目標的收集器,適用于B/S架構的執行環境。

使用標記-清除算法,因此會產生大量的內存碎片。CMS的收集大概能夠分為一下幾個步驟:【初始標記 initial mark】--->【并發標記 concurrent mark】--->【又一次標記 remark】--->【并發清除 concurrent sweep】。

其示意圖例如以下所看到的:


CMS并發收集器

7、G1收集器:是一款面向服務端的收集器,未來有可能替代CMS收集器。

G1收集器具備下面特點:

a、并發與并行:能充分利用多核CPU的硬件特性來縮短停頓時間(Stop-the-world),能夠與應用線程一同執行。

b、分帶搜集:與其它收集器一樣。分代的概念在G1中也存在。

G1可以自己獨立的去管理GC,它可以採用不同的方式去處理不同存活時間的對象。

c、空間整合:從總體上看G1使用的是標記-壓縮(整理)的GC算法。這就意味著在JVM執行的時候不會產生大量的內存碎片。從而能夠讓程序長時間的執行。

d、可預測的停頓:與CMS相比。G1除了能夠有更短的停頓時間之外,還能夠建立可預測的停頓時間模型。

不計算Remembered Set的操作,G1收集器的運作大概能夠分為下面幾個步驟:【初始標記 initial marking】--->【并發標記 concurrent marking】--->【終于標記 final marking】--->【篩選回收 live data counting and evacuation】


G1并發并行收集

GC參數總結

-XX:+<option> 啟用選項

-XX:-<option> 不啟用選項

-XX:<option>=<number>?

-XX:<option>=<string>

  • -XX:+UseSerialGC:在新生代和老年代使用串行收集器
  • -XX:SurvivorRatio:設置eden區大小和survivior區大小的比例
  • -XX:NewRatio:新生代和老年代的比
  • -XX:+UseParNewGC:在新生代使用并行收集器
  • -XX:+UseParallelGC :新生代使用并行回收收集器
  • -XX:+UseParallelOldGC:老年代使用并行回收收集器
  • -XX:ParallelGCThreads:設置用于垃圾回收的線程數
  • -XX:+UseConcMarkSweepGC:新生代使用并行收集器,老年代使用CMS+串行收集器
  • -XX:ParallelCMSThreads:設定CMS的線程數量
  • -XX:CMSInitiatingOccupancyFraction:設置CMS收集器在老年代空間被使用多少后觸發
  • -XX:+UseCMSCompactAtFullCollection:設置CMS收集器在完畢垃圾收集后是否要進行一次內存碎片的整理
  • -XX:CMSFullGCsBeforeCompaction:設定進行多少次CMS垃圾回收后,進行一次內存壓縮
  • -XX:+CMSClassUnloadingEnabled:同意對類元數據進行回收
  • -XX:CMSInitiatingPermOccupancyFraction:當永久區占用率達到這一百分比時。啟動CMS回收
  • -XX:UseCMSInitiatingOccupancyOnly:表示僅僅在到達閥值的時候,才進行CMS回收

GC參數組合

GC參數------------------------------------------------------------------Young------------------------tenured

====================================================================

-XX:+UseSerialGC----------------------------------------------------Serial-------------------------Serial Old

-XX:+UseParallelGC--------------------------------------------------Parallel Scavenge -------Serial Old

-XX:+UseConcMarkSweepGC-------------------------------------ParNew----------------------CMS ?

-XX:+UseParNewGC-------------------------------------------------ParNew----------------------Serial Old

-XX:+UseParallelOldGC---------------------------------------------Parallel Scavenge---------Parallel Old

-XX:+UseConcMarkSweepGC?-XX:+UseParNewGC--------Serial--------------------------CMS?

-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC-------G1-----------------------------G1


轉載于:https://www.cnblogs.com/lxjshuju/p/6888999.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的JVM-垃圾收集器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。