本文聊一下最近处理了一些jvm的问题上,将这个排查和学习过程分享一下,看了很多资料,最终都会落地到几个工具的使用,本文主要是从文档学习、工具学习和第三方技术验证来打开认知和实践,希望有用。
一、文档
不仅知道了《深入理解java虚拟机第三版》,也知道了下面这几本书(从秦金伟老师那得知)
《深入java虚拟机》、《深入解析java虚拟机HpstPot》、《垃圾回收的算法和实现》,都是进阶的好书。
更深入jvm问题,查类似 R大 相关jvm开发者相关文档
[资料合集] RednaxelaFX写的文章/回答的导航帖(work in progress) - 知乎
二、实践验证
1、通过VisualVM在本地启动观察本地jvm情况
主要看这几篇文章
https://www.cnblogs.com/avivaye/p/10515259.html
本地idea配置start.sh中的jvm参数:idea中设置JVM参数的两种方式_idea设置jvm参数-CSDN博客
2、配置gc日志参数,在GCViewer或者gceasy上观察gclog分析
Universal JVM GC analyzer - Java Garbage collection log analysis made easy
3、通过mat软件dump出oom文件
Eclipse Memory Analyzer Open Source Project | The Eclipse Foundation或者
MAT(Memory Analyzer Tool)工具使用超详细版-CSDN博客
4、jvm参数官网查询验证
在不确定的情况下可以在此次查参数验证
三、第三方网站傻瓜式操作
当情况紧急但是自己又不知道怎样设置的时候,可以搜一个jvm调优大佬寒泉子做的一家公司的网站:HeapDump - 产品控制台,
1、注册网站
在这个网站上选择自己的自己想使用的功能,可以使用的功能共有三个:java虚拟机参数分析、java现场dump分析、jjava内存dump文件分析,下面我介绍下自己使用最多的java虚拟机参数分析,
2、测试功能
点击XXFox上的立即使用,我们可以看到参数查询、参数检查、参数变迁、参数优化、参数生成几个入口,
假设我们遇到知道机器配置的,但是不知道怎样设置合理的jvm参数,我们可以点击参数生成按钮,进去后,可以看到,我们需要输入自己的CPU核数,物理内存,操作系统,位数,jdk版本,选择好之后,最简化的方法,
我们点击右下角的生成参数,然后就可以看到生成了参数
3、验证参数
点击复制按钮,就可以将参数复制出来放到自己的启动脚本中,放置方法见上面
二、实践验证
1、在idea安装插件VisualVM可以在本地启动观察本地jvm情况
章节的博文,然后在安装好的visualvm上观察参数表现
-Xmx5440M -Xms5440M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+ParallelRefProcEnabled
当然你也可以自己的情况多生成一些参数,例如我把最后一排全部选择好了,然后可以看到生成的参数多了一些
有时我们会遇到已经有了参数,但是不知道是否合理,就可以使用参数查询的功能,点击下图中的随意一个参数查询,之后将参数输入进去,就会在下方得到一些建议,超级方便,更多功能大家也可以在这个网址下进行查看:Java虚拟机参数分析 - PerfMa (heapdump.cn) 。