课程大纲
第一天上午Java 线程与并发
第一节 Java 线程堆栈分析
线程 Dump :掌握 Java 工具和 API 等多种线程 Dump 技能
理解线程堆栈:理解线程、锁以及线程的各种状态
线程堆栈分析:分析线程死锁、CPU 使用率过高、资源不足、线程不退出等问题
第二节 通过 Java 线程堆栈进行性能瓶颈分析
常见的性能瓶颈
性能瓶颈分析手段和工具
第三节 Java 多线程与高并发
Java 同步原语:从 JDK 级别到 JVM 级别,深度分析和理解 Java synchronized 、volatile 以及 CAS 操作等同步原语
Java 线程 Liveness:实战演示 Java 线程死锁(DeadLock)和饥饿(Starvation)
Java 线程通讯:结合 notify() 和wait() 实现线程间通信,并介绍常见错误案例
Java 线程池:掌握 Executor、ThreadPoolExecutor 、ScheduledExecutorService 以及 Callable 和 Future API 正确使用,防止并发问题
第一天下午 Java 内存管理和泄露
第一节 Java 内存管理
Java 内存区域:介绍 Java 内存区域的组成,深入讨论 Java Heap、方法区、JVM Stack 等职责范围以及设计目的
Java 垃圾收集:介绍 Java 常见垃圾收集器,以及它们对应的收集算法,包括:Serial、Parallel、CMS、G1 等。
第二节 Java 内存泄露故障排查(上)
Java 内存泄漏:理解 Java 内存泄露的危害、以及常现场景,从而提升应用的健壮性
Java OOM:理解 OOM 的含义,以及不同的场景类型
OOM 错误案例:分析 Java 内存泄露的症状,以及快速定位泄露位置(堆、Perm 或 Metasapce)以及解决方案
第三节 Java 内存泄露故障排查(下)
诊断 JVM Crash :介绍 Java 内存泄露引起的 JVM 进程 Crash 的现象和排查手段
诊断 Java 代码:讨论由 Java 代码引起的 Java 内存泄漏的特征以及如何借助诊断工具定位问题代码
诊断 Native 代码:讨论由 Java Native 代码引起的 Java 内存泄漏的特征以及如何借助诊断工具定位问题代码