<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>G1 on 架构视界</title>
    <link>https://blog-architectview.pages.dev/tags/g1/</link>
    <description>Recent content in G1 on 架构视界</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <copyright>© 2026 架构视界 Architect View</copyright>
    <lastBuildDate>Wed, 20 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://blog-architectview.pages.dev/tags/g1/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>JVM 调优手记：GC 停顿时间从 500ms 压到 20ms</title>
      <link>https://blog-architectview.pages.dev/posts/jvm-gc-tuning-500ms-to-20ms/</link>
      <pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate>
      <guid>https://blog-architectview.pages.dev/posts/jvm-gc-tuning-500ms-to-20ms/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;线上告警：P99 延迟从 80ms 飙升至 2000ms，每隔几分钟就有一次「毛刺」。排查了三天，最终发现罪魁祸首是 GC。这是一篇完整的 JVM 调优实战记录，从问题定位到参数调优，全程复盘。&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;事故现场&#34;&gt;事故现场&lt;/h2&gt;&#xA;&lt;p&gt;我们的实时推荐服务部署在 8 台 16C32G 的机器上，JDK 17，堆内存配置为 &lt;code&gt;-Xmx12g -Xms12g&lt;/code&gt;，使用 G1 垃圾回收器。日均请求量 2 亿次，单机 QPS 约 3000。&lt;/p&gt;&#xA;&lt;p&gt;某天凌晨，监控系统突然告警：&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;告警指标：&#xA;- P99 延迟：80ms → 2000ms（持续波动）&#xA;- GC 暂停时间：平均 500ms，峰值 3200ms&#xA;- Full GC 频率：每 3-5 分钟一次&#xA;- CPU 使用率：从 40% 飙升至 85%&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;用户侧的表现是：推荐列表偶尔加载极慢，页面出现空白等待。&lt;/p&gt;&#xA;&lt;h2 id=&#34;第一步收集-gc-日志&#34;&gt;第一步：收集 GC 日志&lt;/h2&gt;&#xA;&lt;p&gt;开启详细 GC 日志是所有调优工作的起点：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# JDK 17 的 GC 日志参数&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-Xlog:gc*:file&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/data/logs/gc.log:time,uptime,level,tags:filecount&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;10,filesize&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;50m&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# 如果是 JDK 8（虽然很老了）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/data/logs/gc.log&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;用 &lt;a href=&#34;https://gceasy.io&#34;&gt;GCEasy&lt;/a&gt; 或 &lt;code&gt;gchisto&lt;/code&gt; 分析日志后，问题一目了然：&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
