java故障排查工具包及优秀技术文章-高频面试必知必会系列
2022-02-16 15:04:10 15 举报
AI智能生成
阿里技术文章 阿里中间件团队技术文章 美团技术 小米信息部技术 爱奇艺技术产品
作者其他创作
大纲/内容
技术博客
阿里技术
子主题
优秀文章推荐
阿里毕玄:提升代码能力的 4 段经历
如何编写有效的接口测试?
一个线上 SQL 死锁异常分析:深入了解事务和锁
多中心容灾实践:如何实现真正的异地多活?
如何做好技术 Team Leader?
阿里毕玄:提升代码能力的 4 段经历
如何编写有效的接口测试?
一个线上 SQL 死锁异常分析:深入了解事务和锁
多中心容灾实践:如何实现真正的异地多活?
阿里中间件团队
子主题
优秀推荐文章
如何避免让微服务测试成为研发团队最大的瓶颈?
我对技术架构的理解与架构师角色的思考
快手基于 RocketMQ 的在线消息系统建设实践
阿里资深技术专家崮德:如何成就更好的自己
如何避免让微服务测试成为研发团队最大的瓶颈?
我对技术架构的理解与架构师角色的思考
快手基于 RocketMQ 的在线消息系统建设实践
美团技术
子主题
优秀推荐文章
新一代垃圾回收器 ZGC 的探索与实践
设计模式在外卖营销业务中的实践
Java 中 9 种常见的 CMS GC 问题分析与解决
新一代垃圾回收器 ZGC 的探索与实践
设计模式在外卖营销业务中的实践
Java线程池实现原理及其在美团业务中的实践
数据治理一体化实践之体系化建模
美团技术年货:1200+页电子书,覆盖前后端、算法、数据、安全、测试、顶会论文
2021年美团技术团队最受欢迎的22篇技术文章
ThoughtWorks 洞见
优秀技术文章
后端开发实践系列——领域驱动设计(DDD)编码实践
写了十年技术博客,我收获了什么
重构的七宗罪
后端开发实践——开发者的第 0 个迭代
后端开发实践系列——领域驱动设计(DDD)编码实践
写了十年技术博客,我收获了什么
重构的七宗罪
小米信息部技术团队
优秀技术文章
如何高效对接第三方支付
设计模式基础之——模板模式业务实战
如何高效对接第三方支付
浅析 RPC 与基本实现
分布式事务,这一篇就够了
360 核心安全技术博客
优秀文章
手机借贷中的偷拍者
手机色情软件中的“偷拍者”
手机借贷中的偷拍者
爱奇艺技术产品团队
优秀文章
爱奇艺基础数据平台演进
爱奇艺埋点投递治理实践
抓包
Wireshark
Wireshark抓包使用指南
https://zhuanlan.zhihu.com/p/82498482
https://zhuanlan.zhihu.com/p/82498482
理论
TCP/IP
两张动图-彻底明白TCP的三次握手与四次挥手
https://blog.csdn.net/qzcsu/article/details/72861891
https://blog.csdn.net/qzcsu/article/details/72861891
wireshark解析TCP的几种状态 (SYN, FIN, ACK, PSH, RST, URG)
https://blog.csdn.net/u012478275/article/details/99624506
https://blog.csdn.net/u012478275/article/details/99624506
堆栈
字节大小换算工具
字节大小换算工具
https://www.bejson.com/convert/filesize/
https://www.bejson.com/convert/filesize/
如何计算Java对象所占内存的大小
https://www.jianshu.com/p/9d729c9c94c4
https://www.jianshu.com/p/9d729c9c94c4
JVM heap dump分析
JVM heap dump分析
https://www.jianshu.com/p/c34af977ade1
https://www.jianshu.com/p/c34af977ade1
HeapAnalyzer
HeapAnalyzer一般用法
https://blog.csdn.net/miaoyibo12/article/details/90484584
https://blog.csdn.net/miaoyibo12/article/details/90484584
IBM HeapAnalyzer是用于发现可能的Java堆泄漏的图形工具。
https://www.ibm.com/support/pages/ibm-heapanalyzer
https://www.ibm.com/support/pages/ibm-heapanalyzer
HeapAnalyzer一般用法
https://blog.csdn.net/miaoyibo12/article/details/90484584
https://blog.csdn.net/miaoyibo12/article/details/90484584
JVM性能调优之生成堆的dump文件
https://blog.csdn.net/lipc_/article/details/52034743
https://blog.csdn.net/lipc_/article/details/52034743
Memory Analyzer Tool
Java内存泄漏分析工具Memory Analyzer Tool
https://cloud.tencent.com/developer/article/1643827
https://cloud.tencent.com/developer/article/1643827
Java8 jvm参数【官网】
Java8 jvm参数【官网】
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html
JVM参数调优总结 -Xms -Xmx -Xmn -Xss
https://blog.csdn.net/jakeswang/article/details/105380403
https://blog.csdn.net/jakeswang/article/details/105380403
如何查看jvm中的各种参数以及默认值
https://blog.csdn.net/wisgood/article/details/80117537
https://blog.csdn.net/wisgood/article/details/80117537
闲谈JVM(一):浅析JVM Heap参数配置
https://blog.csdn.net/wtopps/article/details/106280491
https://blog.csdn.net/wtopps/article/details/106280491
专业工具
PerfMa - Java虚拟机参数分析
https://opts.console.perfma.com/
https://opts.console.perfma.com/
linux下查看jvm详细参数
https://blog.csdn.net/weixin_43810394/article/details/93418224
https://blog.csdn.net/weixin_43810394/article/details/93418224
如何查看jvm中的各种参数以及默认值
https://blog.csdn.net/wisgood/article/details/80117537
https://blog.csdn.net/wisgood/article/details/80117537
垃圾回收
垃圾回收
垃圾回收算法
深入理解JVM,7种垃圾收集器
http://blog.itpub.net/69917606/viewspace-2656882/
http://blog.itpub.net/69917606/viewspace-2656882/
垃圾回收算法哪些?
Garbage First 收集器
新生代
Serial 收集器
定义
最基础、历史悠久的收集器
工作方式&原理
单线程工作,stop the world
Serial 新生代只有一个GC线程,,Serial OLd老年代也只有一个GC线程
新生代
新生代采用复制算法,暂停所有用户线程
老年代
老年代采用标记-整理算法,暂停所有用户线程
Serial & Serial Old收集器运行示意图
子主题
优缺点
只适合客户端模式的虚拟机
ParNew 收集器
定义
它是Serial 收集器的多线程并行版本。
工作方式&原理
多线程进行垃圾收集
ParNew新生代有多个GC线程,Serial OLd老年代只有一个GC线程
继承了Serial收集器可用的所有可用参数( -XX:SurvivorRatio、-XX: PretenureSizeThreshold、-XX:HandlePromotionFailure等 )、收集算法、Stop the World、对象分配规则、回收策略都与Serial收集器完全一致,在实现上两种收集器公用了很多代码。
ParNew / Serial Old收集器运行图
子主题
新生代
新生代采用复制算法,暂停所有用户线程
老年代
老年代采用标记-整理算法,暂停所有用户线程
优缺点
优点
JDK7中
jdk7之前遗留系统中首选的新生代收集器,其中一个与功能、性能无关的但是其实很重要的原因:除了Serial收集器外,只有它能与 CMS收集器配合工作。
缺点
JDK4&JDK5,老年代收集器CMS无法与JDK4中的新生代收集器Parallel Scavenge 配合,于是JDK5中,老年代收集器CMS只能选择新生代ParNew或者Serial
1、遗憾的是,CMS作为老年代的收集器,却无法与 JDK1.4.0中已存在的新生代收集器
Parallel Scavenge配合工作,所以在 JDK 5中使用CMS来收集老年代的时候,新生代只能选择 ParNew 或者 Serial收集器中的一个。
ParNew收集器是激活 CMS后(使用-XX:+UseConcMarkSweepGC选项 )的默认新生代收集器,也可以使用 -XX:+/-UseParNewGC 选项来强制指定或者禁用它。
Parallel Scavenge配合工作,所以在 JDK 5中使用CMS来收集老年代的时候,新生代只能选择 ParNew 或者 Serial收集器中的一个。
ParNew收集器是激活 CMS后(使用-XX:+UseConcMarkSweepGC选项 )的默认新生代收集器,也可以使用 -XX:+/-UseParNewGC 选项来强制指定或者禁用它。
扩展
ParNew的地位
G1要取代CMS
可以说直到CMS的出现才巩固了ParNew的地位,但是成也萧何败也萧何,随着垃圾收集器技术的不断改进,更先进的G1 收集器带着CMS继承者和替代者的光环登出。
G1是一个面向全堆的收集器,不再需要洽谈新生代收集器的配合工作。
所以自从JDK9开始,ParNew加上CMS收集器的组合就不再是官方推荐的服务端模式下的收集器解决方案了。
官方希望它能完全被 G1所取代,甚至还取消了 ParNew 加 Serial Old以及 Serial加CMS这两组组合的支持(其实原本也很少人这样用),并直接取消了 XX:+UseParNewGC 参数,这意味着 ParNew和 CMS从此只能只能互相搭配使用。
这可以理解从此以后, ParNew合并入CMS后,称为他专门处理新生代的租生部分。
ParNew可以说是HotSpot虚拟机中第一款退出历史舞台的垃圾收集器。
G1是一个面向全堆的收集器,不再需要洽谈新生代收集器的配合工作。
所以自从JDK9开始,ParNew加上CMS收集器的组合就不再是官方推荐的服务端模式下的收集器解决方案了。
官方希望它能完全被 G1所取代,甚至还取消了 ParNew 加 Serial Old以及 Serial加CMS这两组组合的支持(其实原本也很少人这样用),并直接取消了 XX:+UseParNewGC 参数,这意味着 ParNew和 CMS从此只能只能互相搭配使用。
这可以理解从此以后, ParNew合并入CMS后,称为他专门处理新生代的租生部分。
ParNew可以说是HotSpot虚拟机中第一款退出历史舞台的垃圾收集器。
Parallel Scavenge 收集器
老年代
Serial Old 收集器
Parallel Old 收集器
CMS 收集器
垃圾回收器之前关系的说明
说明:如果两个收集器之间有连线,说明他们可以搭配使用[3],图中垃圾收集器所处的区域,则表示它是属于新生代收集器或者老年代收集器。
注意
[3] :这个关系并不是一成不变的,由于维护和兼容性测试的成本,在 JDK 8 时将 Serial + CMS ,ParNew + Serial Old这两个组合声明为废弃(JEP 173 http://openjdk.java.net/jeps/173 ),并在JDK 9中完全取消了这些组合的支持(JEP 214 http://openjdk.java.net/jeps/214 )。
[3] :这个关系并不是一成不变的,由于维护和兼容性测试的成本,在 JDK 8 时将 Serial + CMS ,ParNew + Serial Old这两个组合声明为废弃(JEP 173 http://openjdk.java.net/jeps/173 ),并在JDK 9中完全取消了这些组合的支持(JEP 214 http://openjdk.java.net/jeps/214 )。
常见概念说明
并行(Parallel)垃圾收集器
并行描叙的是多条垃圾收集器线程之间的关系,说明同一时间多条这样的线程在协调工作,通常默认此时用户线程处于等待状态。
并发(Concurrent)垃圾收集器
并发描叙的是垃圾收集器线程与用户线程之间的关系,说明同一时间垃圾收集器线程与用户线程都在运行。由于用户线程并未被冻结,所以程序仍然能响应服务请求,但由于垃圾收集器线程占用了一部分系统资源,此时应用程序的处理的吞吐量将受到一定影响。
垃圾回收算法之间的关系
图片来源: https://blogs.oracle.com/jonthecollector/our_collectors
技术博客
什么是 Minor GC/Major GC
https://zhuanlan.zhihu.com/p/134546736
https://zhuanlan.zhihu.com/p/134546736
深入JVM彻底剖析ygc越来越慢的原因(上)
https://blog.csdn.net/weixin_33755554/article/details/89159357
https://blog.csdn.net/weixin_33755554/article/details/89159357
大对象直接进入老年代
https://www.jianshu.com/p/485958b65523
https://www.jianshu.com/p/485958b65523
内存泄漏
遇到内存泄漏Outofmemory怎么解决,看看阿里中间件P7大佬怎么说
https://blog.csdn.net/yunzhaji3762/article/details/111405492
https://blog.csdn.net/yunzhaji3762/article/details/111405492
性能优化
java性能优化 –gc日志收集与分析
https://blog.csdn.net/a_ahreo/article/details/84793375
https://blog.csdn.net/a_ahreo/article/details/84793375
收藏
0 条评论
下一页