深入JVM內(nèi)核原理-7.GC參數(shù)

1.堆的回顧

堆.png

2.串行收集器

  • 最古老,最穩(wěn)定
  • 效率高
  • 可能會(huì)產(chǎn)生較長(zhǎng)的停頓
  • -XX:+UseSerialGC
    • 新生代、老年代使用串行回收
    • 新生代復(fù)制算法
    • 老年代標(biāo)記-壓縮
串行收集器.png

3.并行收集器

  • ParNew

    • -XX:+UseParNewGC
      • 新生代并行
      • 老年代串行
    • Serial收集器新生代的并行版本
    • 復(fù)制算法
    • 多線程,需要多核支持
    • -XX:ParallelGCThreads限制線程數(shù)量
    并行收集器1.png
  • Parallel收集器

    • 類似ParNew
    • 新生代復(fù)制算法
    • 老年代標(biāo)記-壓縮
    • 更加關(guān)注吞吐量
    • -XX:+UseParallelGC
      • 使用Parallel收集器+老年代串行
    • -XX:+UseParallelOldGC
      • 使用Parallel收集器+老年代并行
    并行收集器2.png
    • -XX:MaxGCPauseMills
      • 最大停頓時(shí)間,單位毫秒
      • GC盡力保證回收時(shí)間不超過(guò)設(shè)定值
    • -XX:GCTimeRatio
      • 0-100的取值范圍
      • 垃圾收集時(shí)間占總時(shí)間的比
      • 默認(rèn)99,即最大允許1%時(shí)間做GC
    • 這兩個(gè)參數(shù)是矛盾的。因?yàn)橥nD時(shí)間和吞吐量不可能同時(shí)調(diào)優(yōu)

4.CMS收集器

  • CMS收集器

    • Concurrent Mark Sweep并發(fā)標(biāo)記清除
    • 標(biāo)記-清除算法
    • 與標(biāo)記-壓縮相比
    • 并發(fā)階段會(huì)降低吞吐量
    • 老年代收集器(新生代使用ParNew)
    • -XX:+UseConcMarkSweepGC
  • CMS運(yùn)行過(guò)程比較復(fù)雜,著重實(shí)現(xiàn)了標(biāo)記的過(guò)程,可分為

    • 初始標(biāo)記
      • 根可以直接關(guān)聯(lián)到的對(duì)象
      • 速度快
    • 并發(fā)標(biāo)記(和用戶線程一起)
      • 主要標(biāo)記過(guò)程,標(biāo)記全部對(duì)象
    • 重新標(biāo)記
      • 由于并發(fā)標(biāo)記時(shí),用戶線程依然運(yùn)行,因此在正式清理前,再做修正
    • 并發(fā)清除
      • 基于標(biāo)記結(jié)束,直接清理對(duì)象
    CMS收集器.png
  • 特點(diǎn)

    • 盡可能降低停頓
    • 會(huì)影響系統(tǒng)整體吞吐量和性能
      • 比如,在用戶線程運(yùn)行過(guò)程中,分一半CPU去做GC,系統(tǒng)性能在GC階段,反應(yīng)速度就下降一半
    • 清理不徹底
      • 因?yàn)樵谇謇黼A段,用戶線程還在運(yùn)行,會(huì)產(chǎn)生新的垃圾,無(wú)法清理
    • 因?yàn)楹陀脩艟€程一起運(yùn)行,不能在空間快滿時(shí)再清理
      • -XX:CMSInitiatingOccupancyFraction設(shè)置觸發(fā)GC的閾值
      • 如果不幸內(nèi)存預(yù)留空間不夠,就會(huì)引起concurrent mode failure
    清除與壓縮比較.png
  • -XX:UseCMSCompactAtFullCollection Full GC后,進(jìn)行一次整理

    • 整理過(guò)程是獨(dú)占的,會(huì)引起停頓時(shí)間變長(zhǎng)
  • -XX:+CMSFullGCsBeforeCompaction

    • 設(shè)置進(jìn)行幾次Full GC后,進(jìn)行一次碎片整理
  • -XX:ParallelCMSThreads

    • 設(shè)定CMS的線程數(shù)量

5.GC參數(shù)整理

GC參數(shù)整理1.png

GC參數(shù)整理2.png

6.Tomcat實(shí)例

  • 環(huán)境
    • Tomcat 7
    • JSP網(wǎng)站
    • 測(cè)試網(wǎng)站吞吐量和延時(shí)
  • 工具
    • JMeter
  • 目的
    • 讓Tomcat有一個(gè)不錯(cuò)的吞吐量
Tomcat實(shí)例1.png

Tomcat實(shí)例2.png

Tomcat實(shí)例3.png

Tomcat實(shí)例4.png

Tomcat實(shí)例5.png

Tomcat實(shí)例6.png

Tomcat實(shí)例7.png

Tomcat實(shí)例8.png

Tomcat實(shí)例9.png

Tomcat實(shí)例10.png

Tomcat實(shí)例11.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • JVM架構(gòu) 當(dāng)一個(gè)程序啟動(dòng)之前,它的class會(huì)被類裝載器裝入方法區(qū)(Permanent區(qū)),執(zhí)行引擎讀取方法區(qū)的...
    cocohaifang閱讀 1,834評(píng)論 0 7
  • 這篇文章是我之前翻閱了不少的書籍以及從網(wǎng)絡(luò)上收集的一些資料的整理,因此不免有一些不準(zhǔn)確的地方,同時(shí)不同JDK版本的...
    高廣超閱讀 16,049評(píng)論 3 83
  • 第一章 概述 G1(Garbage First)垃圾收集器是當(dāng)今垃圾回收技術(shù)最前沿的成果之一。早在JDK7就已加入...
    城市里永遠(yuǎn)的學(xué)習(xí)者閱讀 1,207評(píng)論 0 50
  • # 前言 在 深入淺出 JVM GC(2) 中,我們介紹了一些 GC 算法,GC 名詞,同時(shí)也留下了一個(gè)問(wèn)題,就...
    莫那一魯?shù)?/span>閱讀 1,202評(píng)論 1 4
  • # 前言 從前面的3篇文章中,我們分析了5個(gè)垃圾收集器,還有一些 GC 的算法,那么,在 GC 調(diào)優(yōu)中,我們肯定會(huì)...
    莫那一魯?shù)?/span>閱讀 2,906評(píng)論 0 4

友情鏈接更多精彩內(nèi)容