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

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
java > jvm
#jvm

JVM之执行引擎

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

JVM之Class文件结构

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

JVM基础概念

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

高并发问题与排查

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

CompletableFuture异步编程

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

线程池ThreadPoolExecutor

一、七大核心参数123456789public ThreadPoolExecutor( int corePoolSize, // 核心线程数 int maximumPoolSize, // 最大线程数 long keepAliveTime, // 空闲线程存活时间 TimeUnit unit, // 时间单
2026-04-16
java > java并发
#java并发

阻塞队列BlockingQueue

一、BlockingQueue 是什么?自带阻塞功能的线程安全队列 队空:取数据的线程会阻塞等待 队满:放数据的线程会阻塞等待 天然实现生产者 - 消费者模型,完全不用写 wait/notify 核心方法(必须记住): put(e):队满则阻塞 take():队空则阻塞 offer(e) / poll():不阻塞,返回布尔 /null 二、四大常用阻塞队列(本
2026-04-16
java > java并发
#java并发

ThreadLocal

一、ThreadLocal 核心作用线程本地变量: 每个线程独有一份变量副本,线程之间完全隔离、互不干扰; 用来避免多线程共享变量竞争,代替加锁,提升并发效率。 二、实现原理1. 核心归属关系每个 Thread 对象 内部,自带一个: 1ThreadLocal.ThreadLocalMap threadLocals; 不是 ThreadLocal 存数据 数据存在当前线程自己的 ThreadL
2026-04-16
java > java并发
#java并发
1234…29

搜索

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