ZxdNoob
首页文章简历版本历史AI 向导

ZxdNoob

用心记录,认真生活

按 ⌘K 快速导航到任意页面按 ⌘I 打开 AI 向导(或访问 /agent)

导航

  • 首页
  • 简历
  • 版本历史
  • AI 向导

更多

  • GitHub
  • Sitemap

© 2026 ZxdNoob. All rights reserved.

Built with Next.js · Styled with Tailwind CSS

返回文章列表
2026年5月2日 00:30:001 分钟阅读

Java 进阶 02:JVM 运行时、GC 与调参入门(从现象到证据)

堆/栈/元空间、对象分配与 TLAB、常见 GC 算法对比、GC 日志与 jcmd/jstack 入门;Stop-The-World 与延迟取舍,避免迷信参数大全。

  • Java
  • JVM
  • GC
  • 性能
AI 共读让 Noob 帮你提炼要点 / 答疑

本篇目标:能说清堆、栈、元空间职责;知道 Young/Old GC 直觉;能打开 GC 日志并从 pause 与频次入手分析;避免「盲目 -Xmx」。


1. 知识点:运行时数据区(HotSpot 心智)#

区域存什么GC 参与
虚拟机栈栈帧、局部变量否
堆对象实例是(主战场)
元空间类元数据部分回收/卸载
直接内存NIO Buffer 等Cleaner,需警惕泄漏

2. 知识点:分代收集直觉#

  • Young GC:短命对象批量回收,通常频繁但 pause 较短(取决于收集器与存活)。
  • Old/Major:老年代不足或晋升失败触发;pause 往往更长。
  • Full GC:整堆压缩类操作(口语常混用);需看具体收集器日志。

分配速率:单位时间新建对象量过高 → Young GC 过密 → CPU 消耗在 GC。


3. 知识点:常用 JVM 参数(JDK 11+,示例)#

具体收集器名随 JDK 变化,以官方文档为准;原则是「先开日志,再调堆」。

-Xms2g -Xmx2g
-XX:+AlwaysPreTouch
-XX:+UseStringDeduplication   # 视场景
-Xlog:gc*:file=gc.log:time,uptime,level,tags

学以致用:堆 -Xms=-Xmx 减少 resize;生产开启 GC 日志轮转。


4. 知识点:诊断命令(示例)#

jcmd <pid> VM.flags
jcmd <pid> GC.heap_info
jstack <pid> > threads.txt

CPU 高:优先线程栈看锁与 RUNNABLE 热点;再结合剖析工具。


5. Lab#

写循环分配短命 byte[](例如 1MB × N),固定堆 512MB,打开 -Xlog:gc*,记录 Young GC 次数与最大 pause。


6. 自测清单#

  1. 栈溢出 vs 堆 OOM 典型栈特征?
  2. 为何「增大堆」不一定降低 pause?
  3. Young GC 过密可能说明什么?
  4. 如何用 jstack 怀疑死锁?

下一篇:Spring 事务与集成边界。

相关阅读

基于内容相似度 + 标签/系列加权

  • 2026年5月2日 00:48:001 分钟Java 从基础到精通(初级 · 高级 · 专家路线)
    01

    Java 精通 02:性能剖析、容量规划与可观测性(指标 · 日志 · 链路)

    专家必备:从基准测试误区到火焰图/JFR、线程与分配剖析;RED/USE 类指标、结构化日志、分布式追踪与 SLO;压测如何服务于容量决策。

    • Java
    • 性能
    • 可观测性
  • 2026年5月2日 00:06:002 分钟Java 从基础到精通(初级 · 高级 · 专家路线)
    02

    Java 基础 01:平台、JDK、字节码与可维护的最小项目骨架

    写给初级工程师:JVM/JRE/JDK 分工、源码到字节码的路径、classpath 与模块的基础心智;用 Maven 或 Gradle 搭一个最小可测试骨架。

    • Java
    • JVM
    • 基础
  • 2026年5月2日 00:24:002 分钟Java 从基础到精通(初级 · 高级 · 专家路线)
    03

    Java 进阶 01:JUC、线程池、CompletableFuture 与异步组合实战

    写给高级工程师:happens-before 直觉、Lock 与原子类、ExecutorService 参数含义、超时/取消/组合异步;常见踩坑与背压入门。

    • Java
    • 并发
    • JUC
  • 2026年5月2日 00:18:002 分钟Java 从基础到精通(初级 · 高级 · 专家路线)
    04

    Java 基础 03:异常体系、try-with-resources、IO/NIO.2 入门与并发初探

    初级收尾篇:受检/非受检异常取舍、异常链与日志;现代 IO 用法;线程与 synchronized 的最小正确用法,为进阶 JUC 铺路。

    • Java
    • 异常
    • IO
返回文章列表

目录

6
  1. 1. 知识点:运行时数据区(HotSpot 心智)
  2. 2. 知识点:分代收集直觉
  3. 3. 知识点:常用 JVM 参数(JDK 11+,示例)
  4. 4. 知识点:诊断命令(示例)
  5. 5. Lab
  6. 6. 自测清单
进入沉浸式阅读