前言
在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在Stop The World问题,因此很容易导致服务超时,引发性能问题。
我们团队负责的广告系统承接了比较大的C端流量,平峰期间的请求量基本达到了上千QPS,过去也遇到了很多次GC相关的线上问题。
这篇文章,我再分享一个更棘手的Young GC耗时过长的线上案例,同时会整理下YGC相关的知识点,希望让你有所收获。内容分成以下2个部分:
- 从一次YGC耗时过长的案例说起
- YGC的相关知识点总结
蚂蚁花呗第一次技术面(60min):
- Java容器有哪些?哪些是同步容器,哪些是并发容器?
- ArrayList和LinkedList的插入和访问的时间复杂度?
- java反射原理, 注解原理?
- 说说一致性 Hash 原理
- 新生代分为几个区?使用什么算法进行垃圾回收?为什么使用这个算法?
- HashMap在什么情况下会扩容,或者有哪些操作会导致扩容?
- HashMap push方法的执行过程?
- HashMap检测到hash冲突后,将元素插入在链表的末尾还是开头?
- 1.8还采用了红黑树,讲讲红黑树的特性,为什么人家一定要用红黑树而不是AVL、B树之类的?
- https和http区别,有没有用过其他安全传输手段?
- 线程池