前言
在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在Stop The World问题,因此很容易导致服务超时,引发性能问题。
我们团队负责的广告系统承接了比较大的C端流量,平峰期间的请求量基本达到了上千QPS,过去也遇到了很多次GC相关的线上问题。
这篇文章,我再分享一个更棘手的Young GC耗时过长的线上案例,同时会整理下YGC相关的知识点,希望让你有所收获。内容分成以下2个部分:
- 从一次YGC耗时过长的案例说起
- YGC的相关知识点总结
初识多线程
- 介绍进程
- 回到线程
- 进程与线程
- 并行与并发
- Javs实现多线程
- Java实现多线程需要注意的细节
Thread线程类API
设置线程名
守护线程
优先级线程
线程生命周期
使用多线程需要注意的问题
- 线程安全问题
- 性能问题
- 安全发布对象
- 简述解决线程安全性的办法
- 原子性和可见性
- 线程封闭
- 不变性
- 线程安全性委托
synchronized锁和lock锁
- synchronized锁
- Lock显式锁
- Java锁简单总结
AQS
- AQS是什么?
- 同步状态
- 先进先出队列
- sacquire方法
- release方法
ReentrantLock
- 内部类
- 构造方法
- 非公平lock方法
- 公平lock方法
- unlock方法
ReentrantReadWriteLock
- ReentrantReadWriteLock内部类
- 读锁和写锁的状态表示
- 写锁的获取
- 读锁获职
线程池
- 线程池简介
- JDK提供的线程池API
- ForkJoinPool线程池
- Callable和Future
- ThreadPoolExecutor详解
- execute执行方法
- 线程池关闭
死锁
- 锁顺序死锁
- 动态锁顺序死锁
- 协作对象之间发生死锁
- 固定锁顺序避免死锁
- 开放调用避免死锁
- 使用定时锁
- 死锁检测
线程常用的工具类
- CountDownLatch
- CyclicBarrier
- Semaphore
Atomic
- 基础铺垫
- CAS失败重试(自旋)
- 原子变量类简单介绍
- LongAdder、AtomicLong性能对比
ThreadLocal
- 什么是ThreadLocal
- 为什么要学习ThreadLocal?
- ThreadLocal底层原理总结
- 避免内存泄露
最后
既已说到spring cloud alibaba,那对于整个微服务架构,如果想要进一步地向上提升自己,到底应该掌握哪些核心技能呢?
就个人而言,对于整个微服务架构,像RPC、Dubbo、Spring Boot、Spring Cloud Alibaba、Docker、kubernetes、Spring Cloud Netflix、Service Mesh等这些都是最最核心的知识,架构师必经之路!下图,是自绘的微服务架构路线体系大纲,如果有还不知道自己该掌握些啥技术的朋友,可根据小编手绘的大纲进行一个参考。
如果觉得图片不够清晰,也可来找小编分享原件的xmind文档!
且除此份微服务体系大纲外,我也有整理与其每个专题核心知识点对应的最强学习笔记:
出神入化——SpringCloudAlibaba.pdf
SpringCloud微服务架构笔记(一).pdf
SpringCloud微服务架构笔记(二).pdf
SpringCloud微服务架构笔记(三).pdf
SpringCloud微服务架构笔记(四).pdf
Dubbo框架RPC实现原理.pdf
Dubbo最新全面深度解读.pdf
Spring Boot学习教程.pdf
SpringBoo核心宝典.pdf
第一本Docker书-完整版.pdf
使用SpringCloud和Docker实战微服务.pdf
K8S(kubernetes)学习指南.pdf
需要下载的请**点击传送门:《出神入化——SpringCloudAlibaba》**
另外,如果不知道从何下手开始学习呢,小编这边也有对每个微服务的核心知识点手绘了其对应的知识架构体系大纲,不过全是导出的xmind文件,全部的源文件也都在此,照样可免费分享给有需要的你!
docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)**
[外链图片转存中…(img-nyPBmAvp-1619592862722)]
另外,如果不知道从何下手开始学习呢,小编这边也有对每个微服务的核心知识点手绘了其对应的知识架构体系大纲,不过全是导出的xmind文件,全部的源文件也都在此,照样可免费分享给有需要的你!