JVM问题排查宝典

18 阅读3分钟

本文聊一下最近处理了一些 jvm 的问题上,将这个排查和学习过程分享一下,主要是从文档学习、工具学习和第三方技术验证来打开认知和实践,希望有用。

一、实践验证

1、通过VisualVM在本地启动观察本地jvm情况

第一步:选择 Run 下面的 Edit Configurations

image

第二步:第一步打开后,出现如下界面,选择想配置的应用,然后在右侧的 VM options 设置 JVM 参数,配置完,重新运行项目就行了。

image

第三步:idea 设置全局的 JVM 参数

image

image

打开后,可以看到一些默认的参数配置

第四步:安装 visual 插件

image

image

第五步:启动运行 visual 插件

image

看到这个就大体上成功了

image

2、观察 gc 日志参数

GCViewer 或者 gceasy上 观察 gclog 分析

官网分别为:

github.com/chewiebug/G…

gceasy.ycrash.cn/

使用方式大家可以自行百度,很简单易用

3、通过 mat 软件 dump 出 oom 文件排查

mat官网下载地址为:eclipse.dev/mat/downloa…

mat这个工具主要用来分析一些oom文件,使用方式也可以自行百度,也很简单易用。

4、jvm参数官网查询验证

在不确定的情况下可以在此次查参数验证

www.oracle.com/java/techno…

二、第三方网站简化处理

当情况紧急但是自己又不知道怎样设置的时候,可以搜一个jvm调优大佬寒泉子做的一家公司的网站:HeapDump - 产品控制台,来进行简化工作

1、注册网站

在这个网站上选择自己的自己想使用的功能,可以使用的功能共有三个:java 虚拟机参数分析、java 现场 dump 分析、java 内存 dump 文件分析,下面我介绍下自己使用最多的 java 虚拟机参数分析

image


2、测试功能

点击 XXFox 上的立即使用,我们可以看到参数查询、参数检查、参数变迁、参数优化、参数生成几个入口。

image

假设我们遇到知道机器配置的,但是不知道怎样设置合理的 jvm 参数,我们可以点击参数生成按钮,进去后,可以看到,我们需要输入自己的 CPU 核数,物理内存,操作系统,位数,jdk 版本,选择好之后,最简化的方法,

image

我们点击右下角的生成参数,然后就可以看到生成了参数

image


3、参数生成


image

就会出现

image

当然你也可以自己的情况多生成一些参数,例如我把最后一排全部选择好了,然后可以看到生成的参数多了一些

image

有时我们会遇到已经有了参数,但是不知道是否合理,就可以使用参数查询的功能,点击下图中的随意一个参数查询,之后将参数输入进去,就会在下方得到一些建议,超级方便,更多功能大家也可以在这个网址下进行查看:opts.console.heapdump.cn/

image

image


三、深入学习


《深入理解j ava 虚拟机第三版》、《深入 java 虚拟机》、《深入解析 java 虚拟机HpstPot 》、《垃圾回收的算法和实现》,都是进阶的好书。

更深入jvm问题,查类似 R大 相关 jvm 开发者相关文档

zhuanlan.zhihu.com/p/25042028