本文聊一下最近处理了一些 jvm 的问题上,将这个排查和学习过程分享一下,主要是从文档学习、工具学习和第三方技术验证来打开认知和实践,希望有用。
一、实践验证
1、通过VisualVM在本地启动观察本地jvm情况
第一步:选择 Run 下面的 Edit Configurations
第二步:第一步打开后,出现如下界面,选择想配置的应用,然后在右侧的 VM options 设置 JVM 参数,配置完,重新运行项目就行了。
第三步:idea 设置全局的 JVM 参数
打开后,可以看到一些默认的参数配置
第四步:安装 visual 插件
第五步:启动运行 visual 插件
看到这个就大体上成功了
2、观察 gc 日志参数
在 GCViewer 或者 gceasy上 观察 gclog 分析
官网分别为:
https://github.com/chewiebug/GCViewer
使用方式大家可以自行百度,很简单易用
3、通过 mat 软件 dump 出 oom 文件排查
mat官网下载地址为:https://eclipse.dev/mat/downloads.php
mat这个工具主要用来分析一些oom文件,使用方式也可以自行百度,也很简单易用。
4、jvm参数官网查询验证
在不确定的情况下可以在此次查参数验证
https://www.oracle.com/java/technologies/javase/vmoptions-jsp.html
二、第三方网站简化处理
当情况紧急但是自己又不知道怎样设置的时候,可以搜一个jvm调优大佬寒泉子做的一家公司的网站:HeapDump - 产品控制台,来进行简化工作
1、注册网站
在这个网站上选择自己的自己想使用的功能,可以使用的功能共有三个:java 虚拟机参数分析、java 现场 dump 分析、java 内存 dump 文件分析,下面我介绍下自己使用最多的 java 虚拟机参数分析
2、测试功能
点击 XXFox 上的立即使用,我们可以看到参数查询、参数检查、参数变迁、参数优化、参数生成几个入口。
假设我们遇到知道机器配置的,但是不知道怎样设置合理的 jvm 参数,我们可以点击参数生成按钮,进去后,可以看到,我们需要输入自己的 CPU 核数,物理内存,操作系统,位数,jdk 版本,选择好之后,最简化的方法,
我们点击右下角的生成参数,然后就可以看到生成了参数
3、参数生成
就会出现
当然你也可以自己的情况多生成一些参数,例如我把最后一排全部选择好了,然后可以看到生成的参数多了一些
有时我们会遇到已经有了参数,但是不知道是否合理,就可以使用参数查询的功能,点击下图中的随意一个参数查询,之后将参数输入进去,就会在下方得到一些建议,超级方便,更多功能大家也可以在这个网址下进行查看:https://opts.console.heapdump.cn/
三、深入学习
《深入理解j ava 虚拟机第三版》、《深入 java 虚拟机》、《深入解析 java 虚拟机HpstPot 》、《垃圾回收的算法和实现》,都是进阶的好书。
更深入jvm问题,查类似 R大 相关 jvm 开发者相关文档