91aaa在线国内观看,亚洲AV午夜福利精品一区二区,久久偷拍人视频,久久播这里有免费视播

<strong id="fvuar"></strong>

  • <sub id="fvuar"><dl id="fvuar"><em id="fvuar"></em></dl></sub>

    1. 千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

      手機站
      千鋒教育

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

      千鋒教育

      掃一掃進入千鋒手機站

      領取全套視頻
      千鋒教育

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

      當前位置:首頁  >  技術干貨  > Java培訓:垃圾收集器——串行與并行、CMS與G1

      Java培訓:垃圾收集器——串行與并行、CMS與G1

      來源:千鋒教育
      發(fā)布人:xqq
      時間: 2023-12-10 00:42:31 1702140151

      眾所周知,垃圾收集是影響性能的事情之一,所以我們應該努力學習GC的基本知識,特別是因為Java8在這一領域做了一些重大的更改和改進,尤其是隨著PermGen的刪除和一些新的令人興奮的優(yōu)化。通過參加java培訓,學習最新java技能,可以讓你的實力一直保持領先水平,提升行業(yè)競爭力。

      當我們談論垃圾收集時,絕大多數人都知道這個概念,并在日常編程中使用它。即便如此,我們還是有很多不理解的地方。關于JVM最大的誤解之一是它有一個垃圾收集器,實際上它提供了四個不同的垃圾收集器,每個垃圾收集器都有自己獨特的優(yōu)點和缺點。選擇使用哪一個是由你自己決定的,吞吐量和應用程序暫停之間的差異可能是巨大的。

      這四種垃圾收集算法的共同點是,它們是分代的,這意味著它們將托管堆劃分為不同的部分,使用了一種古老的假設,即堆中的大多數對象都是短暫的,應該快速回收。

      1.串行收集器

      串行收集器是最簡單的,也是你可能不會使用的,因為它主要是為單線程環(huán)境(例如32位或Windows)和小堆設計的。這個收集器在工作時會凍結所有應用程序線程,這使得它在任何情況下都不能在服務器環(huán)境中使用。在java培訓中,有很多關于Java開發(fā)工具、庫和框架的培訓課程,在專業(yè)老師的教學指導下,可以很全面地掌握相關知識和技能。

      如何使用它:你可以通過打開-XX:+UseSerialGCJVM參數來使用它

      2.并行/吞吐量收集器

      接下來是并行收集器。這是JVM的默認收集器。就像它的名字一樣,它最大的優(yōu)點是使用多個線程來掃描和壓縮堆。并行收集器的缺點是,當執(zhí)行次要或完整GC收集時,它將停止應用程序線程。并行收集器最適合那些可以容忍應用程序暫停并試圖優(yōu)化收集器導致的較低CPU開銷的應用程序。

      3.CMS收集器

      并行收集器的后續(xù)是CMS收集器(“并發(fā)標記掃描”)。該算法使用多個線程(“并發(fā)”)在堆中掃描(“標記”)可回收的未使用對象(“掃描”)。在兩種情況下,該算法將進入“停止世界”(STW)模式:當初始化根(舊一代中可以從線程入口點或靜態(tài)變量訪問的對象)的初始標記時,以及當應用程序在算法同時運行時更改了堆的狀態(tài)時,迫使它返回并做一些最后的潤色,以確保它標記了正確的對象。對Java感興趣的同學可以參加java培訓,可以獲得快速有效的學習。

      使用此收集器時,最大的問題是遇到升級失敗,即在收集年輕一代和老年一代之間發(fā)生競爭的情況。如果收集器需要將年輕的對象提升到舊一代,但沒有足夠的時間騰出空間來清除它,它將不得不首先這樣做,這將導致完整的STW收集——這正是CMS收集器想要防止的事情。為了確保這種情況不會發(fā)生,你可以增加舊一代的大小(或者整個堆的大小),或者為收集器分配更多的后臺線程,讓他與對象分配的速率競爭。

      與并行收集器相比,該算法的另一個缺點是,它使用更多的CPU,通過使用多個線程執(zhí)行掃描和收集,為應用程序提供更高級別的連續(xù)吞吐量。對于大多數不利于應用程序凍結的長期運行的服務器應用程序,這通常是一個很好的權衡。即便如此,該算法在默認情況下也不會啟用。你必須指定XX:+USeParNewGC才能真正啟用它。如果你愿意分配更多的CPU資源來避免應用程序暫停,假設你的堆大小小于4Gb,這就是你可能想要使用的收集器。然而,如果它大于4GB,你可能會想使用最后一種算法——G1收集器。想學習java技術的同學,不妨報個Java培訓班,有明確清晰的學習路線,理論知識+實戰(zhàn)操作,可以獲得快速提升。

      4.G1收集器

      JDK7更新4中引入的垃圾優(yōu)先收集器(G1)旨在更好地支持大于4GB的堆。G1收集器利用多個后臺線程來掃描它劃分為區(qū)域的堆,范圍從1MB到32MB(取決于堆的大小)。G1收集器旨在首先掃描那些包含最多垃圾對象的區(qū)域,并將其命名為(垃圾優(yōu)先)。此收集器是使用–XX:+UseG1GC標志打開的。

      此策略降低了在后臺線程完成對未使用對象的掃描之前堆被耗盡的可能性,在這種情況下,收集器將不得不停止應用程序,這將導致STW收集。G1還有另一個優(yōu)點,那就是它在移動中壓縮了堆,而CMS收集器只在完整的STW收集過程中才這樣做。在java培訓中,不僅有理論知識的課程,還有大量實戰(zhàn)項目學習,讓你在實踐中真正掌握Java知識和技能。

      在過去的幾年里,大型堆一直是一個相當有爭議的領域,許多開發(fā)人員從每臺機器的單個JVM模型轉向每臺機器有多個JVM的更微服務、組件化的架構。這是由許多因素驅動的,包括希望隔離不同的應用程序部分,簡化部署,避免將應用程序類重新加載到內存中通常會帶來的成本(這在Java8中實際上得到了改進)。

      即便如此,在JVM中,這樣做的最大驅動因素之一源于避免大型堆中出現的長時間“停止世界”暫停(在大型集合中可能需要幾秒鐘)的愿望。Docker等容器技術也加速了這一進程,使你能夠相對輕松地在同一物理機器上部署多個應用程序。

      總結

      這些收集器中的每一個都通過一系列切換和開關進行了不同的配置和調整,每個都有可能增加或減少吞吐量,所有這些都基于你的應用程序的特定行為。參加java培訓是入門學習的最佳選擇,有經驗豐富的專業(yè)老師面授指導教學,通過理論結合實戰(zhàn)的方式教授java基礎知識,幫助你更好的理解與運用java。

      tags: Java培訓
      聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
      10年以上業(yè)內強師集結,手把手帶你蛻變精英
      請您保持通訊暢通,專屬學習老師24小時內將與您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