JVM问题排查宝典

简介: 本文介绍了JVM问题排查与学习的经验,包括使用VisualVM监控本地JVM、通过GCViewer和gceasy分析GC日志、使用MAT分析OOM以及查询官方JVM参数。还提到了一个第三方网站HeapDump,提供简化版的JVM参数分析和生成服务,以快速生成适合特定环境的JVM配置。此外,推荐了几本深入学习JVM的书籍,并提供了进一步学习JVM问题的资源。

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

一、实践验证

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

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

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

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

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

第四步:安装 visual 插件

第五步:启动运行 visual 插件

看到这个就大体上成功了

2、观察 gc 日志参数

GCViewer 或者 gceasy上 观察 gclog 分析

官网分别为:

https://github.com/chewiebug/GCViewer

https://gceasy.ycrash.cn/

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

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 开发者相关文档

https://zhuanlan.zhihu.com/p/25042028

目录
相关文章
|
6月前
|
监控 Java 索引
cpu使用率过高和jvm old占用过高排查过程
cpu使用率过高和jvm old占用过高排查过程
164 2
|
Kubernetes 监控 Java
【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析?
【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析?
797 0
【JVM故障问题排查心得】「内存诊断系列」Docker容器经常被kill掉,k8s中该节点的pod也被驱赶,怎么分析?
|
6月前
|
缓存 算法 安全
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(二)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
65 0
|
6月前
|
缓存 Java C#
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(一)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
153 0
|
4月前
|
监控 安全 Java
JVM内存问题之排查Direct Memory泄漏有哪些常用方法
JVM内存问题之排查Direct Memory泄漏有哪些常用方法
120 2
|
4月前
|
监控 Java Linux
JVM内存问题之如果堆内存一直缓慢上涨,如何解决
JVM内存问题之如果堆内存一直缓慢上涨,如何解决
607 1
|
4月前
|
缓存 算法 Java
JVM内存溢出(OutOfMemory)异常排查与解决方法
JVM内存溢出(OutOfMemory)异常排查与解决方法
|
6月前
|
存储 监控 Java
三万字长文:JVM内存问题排查Cookbook
本文主要系统性地整理了排查思路,为大家遇到问题时提供全面的排查流程,不至于漏掉某些可能性误入歧途浪费时间。
|
6月前
|
Java Linux Arthas
linux上如何排查JVM内存过高?
linux上如何排查JVM内存过高?
1090 0
|
6月前
|
消息中间件 Java 应用服务中间件
深入理解JVM - 如何排查分区溢出问题
深入理解JVM - 如何排查分区溢出问题
90 0