这是一件很酷的事
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于

JVM之实战案例

一、Web 服务 GC 频繁调优(最常见)1. 现象 接口偶尔超时、抖动 监控:Minor GC 频繁、老年代缓慢上涨、定时 Full GC CPU 偶尔飙升,STW 导致响应变慢 2. 根因 新生代过小,对象快速进老年代 业务短期小对象过多(JSON 序列化、临时集合、日志对象) Survivor 区太小,对象存活一轮直接晋升 未使用低延迟收集器,GC 停顿过长 3. 优化方案 调大新生代
2026-04-17
jvm
#jvm

jvm之参数与调优

一、堆内存核心参数 -Xms 初始堆内存,生产建议 =Xmx,避免运行时动态扩容卡顿 -Xmx 最大堆内存,防止 OOM,根据服务器配置合理设置 -Xmn 新生代整体大小(Eden+2 个 Survivor) -XX:NewRatio 老年代 / 新生代 比例 例:NewRatio=2 老年代:新生代 = 2:1 -XX:SurvivorRatio Eden
2026-04-17
jvm
#jvm

jvm之常见线上问题排查

一、OOM 排查 完整流程1. 前置配置(线上必开)12-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/xxx/heap.hprof OOM 自动生成堆快照,避免现场丢失。 2. 排查步骤 拿到进程 PID 若未自动 dump,手动导出: 1jmap -dump:format=b,file=heap.hprof PID 使用 MAT &#x
2026-04-17
jvm
#jvm

jvm之监控与分析工具

一、JDK 自带命令行工具1. jps作用:查看当前 Java 进程、进程号 1jps -l # 展示进程ID + 全类名/jar包 日常第一步:先拿进程 PID。 2. jstat作用:实时监控 GC 统计、内存分代使用、类加载 高频用法: 12# 每500毫秒打印一次GC概况jstat -gc 进程ID 500 可看:Eden、Survivor、老年代、元空间、GC 次数 /
2026-04-17
jvm
#jvm

jvm之执行引擎

一、字节码执行流程Java 源码 → javac 编译 → Class 字节码 → JVM 执行引擎运行 执行引擎两种模式:解释执行 + 编译执行 1. 解释执行 JVM 自带解释器,逐行读取字节码、边解释边执行 启动快、无需预热 缺点:循环 / 高频代码反复解释,执行效率低 2. 编译执行(JIT) 运行时探测热点代码,一次性编译为本地机器码 直接交由 CPU 执行,效率极高 启动慢
2026-04-17
jvm
#jvm

jvm之Class文件结构

Class 文件结构Class 文件是 Java 跨平台的核心,它是二进制字节流格式,与操作系统、硬件无关,JVM 只识别 Class 文件,不直接识别 Java 源码。 一、Class 文件本质 一组以8 位字节为基础的二进制流 由 JVM 规范严格定义,所有 Java 编译器(javac、kotlinc 等)都必须遵守 结构固定、紧凑、无任何分隔符 二、完整结构(固定顺序)Class 文件
2026-04-17
jvm
#jvm

JVM基础概念

JVM学习路线1. JVM 基础概念 JVM、JRE、JDK 的区别与联系 JVM 跨平台原理(一次编译、到处运行) HotSpot VM 主流地位与其他 VM(OpenJ9、Zing)简介 2. 运行时数据区 线程私有区域: 程序计数器、虚拟机栈、本地方法栈 栈帧结构(局部变量表、操作数栈、动态链接、方法出口) StackOverflowError 触发场景 线程共享区域: Java 堆、
2026-04-17
jvm
#jvm

高并发问题与排查

一、常见高并发底层问题1. 锁竞争 & 上下文切换(1)锁竞争 现象:大量线程争抢同一把锁,大量 BLOCKED 线程,请求排队、接口 rt 飙升、吞吐量下降。 原因: synchronized / ReentrantLock 锁粒度过大 共享变量无脑加锁,串行化严重 全局唯一大锁,并发退化串行 后果:锁等待耗时、服务吞吐上不去、高峰期雪崩。 (2)上下文切换CPU 线程来
2026-04-16
java并发
#java并发

CompletableFuture异步编程

一、核心定位CompletableFuture = JDK8 全新异步非阻塞编程工具 替代 Future + 线程池 老旧写法 支持链式回调、任务串行 / 并行组合、异常自动传递 不用手动写回调嵌套,解决回调地狱 默认用 ForkJoinPool 公共线程池,也可自定义指定线程池 二、异步任务创建与执行1. 常用创建方法12345// 无返回值 异步执行Completab
2026-04-16
java并发
#java并发

并发集合

一、ConcurrentHashMap 1.7 vs 1.81. JDK 1.7 :分段锁(Segment) 结构:Segment 数组 + HashEntry 数组 + 链表 锁设计: 把 Map 分成 16 个 Segment 每个 Segment 是一把独立的 ReentrantLock 不同 Segment 可以并发读写 核心:分段加锁,减小锁粒度,提高并发度 缺点: 结构复杂 链表查
2026-04-16
java并发
#java并发
123…28

搜索

Hexo Fluid
京ICP备18028493号 | police-icon 11010502035713