linux上如何排查JVM内存过高?

简介: linux上如何排查JVM内存过高?

怎么排查JVM内存过高?

前言:

想必工作一两年以后的同学都会逐渐面临到,jvm等问题,但是可能苦于无法熟练的使用一些工具;本文将介绍几个比较常用分析工具的使用方法,带着大家一步步定位分析问题。


1、top 查看进程


我们来看pid 16160 这个进程占用资源相对来说较高

2、top -Hp pid 查看指定进程下线程


其实到这一步,我们已经进一步缩小了排查范围了,从如上图所示,我们可以知道,线程22652是一个java的定时任务线程,以及我们资源占用较多的java子线程。


到达这一步我们现在有很多工具可以去详细定位了,介绍几个我平常用的比较多的吧


3,jstack

把16进制转一下10进制

因为Java线程文件中的线程ID是16进制,所以需要将线程PID 从十进制转换成十六进制

命令:

echo "obase=16;161633" | bc

然后转换后输出: 3F23

最后执行 jstack 3F23

如下图已经详细打印了堆栈,自己可以去分析了。


4,Arthas

这是一个我之前写的jvm分析工具,阿里巴巴的,可以挪步,我个人觉得这个工具更爽

Arthashttps://blog.csdn.net/qq_38420688/article/details/109166153


5,jconsole

6,最后兜底


可以在服务启动的时候加入参数控制系统oom时输出堆栈,便于我们定位问题: -XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=/**.hprof


参考如下命令:

nohup  java -Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/xxx.hprof -jar xxx.jar > info.log &


7,最后奉上大招

一个我也很喜欢用的工具,有些时候可能有些电脑没有环境,无法用自带的分析工具,这个在线的工具就派上用场了。

HeapHero :https://heaphero.io/index.jsp

相关文章
|
4天前
|
存储 Linux Android开发
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility 是一个完全开源的工具,用于从内存 (RAM) 样本中提取数字工件。支持Windows,Linux,MaC,Android等多类型操作系统系统的内存取证。针对竞赛这块(CTF、技能大赛等)基本上都是用在Misc方向的取证题上面,很多没有听说过或者不会用这款工具的同学在打比赛的时候就很难受。以前很多赛项都是使用vol2.6都可以完成,但是由于操作系统更新,部分系统2.6已经不支持了,如:Win10 等镜像,而Volatility3是支持这些新版本操作系统的。
|
4天前
|
Web App开发 JavaScript Java
如何排查 Electron V8 引发的内存 OOM 问题
如何排查 Electron V8 引发的内存 OOM 问题
|
5天前
|
存储 监控 算法
【JVM】如何定位、解决内存泄漏和溢出
【JVM】如何定位、解决内存泄漏和溢出
12 0
|
5天前
|
算法 安全 Java
JVM系列4-垃圾收集器与内存分配策略(二)
JVM系列4-垃圾收集器与内存分配策略(二)
10 0
JVM系列4-垃圾收集器与内存分配策略(二)
|
5天前
|
存储 监控 算法
JVM系列4-垃圾收集器与内存分配策略(一)
JVM系列4-垃圾收集器与内存分配策略(一)
14 0
|
6天前
|
算法 Linux 测试技术
Linux编程:测试-高效内存复制与随机数生成的性能
该文探讨了软件工程中的性能优化,重点关注内存复制和随机数生成。文章通过测试指出,`g_memmove`在内存复制中表现出显著优势,比简单for循环快约32倍。在随机数生成方面,`GRand`库在1000万次循环中的效率超过传统`rand()`。文中提供了测试代码和Makefile,建议在性能关键场景中使用`memcpy`、`g_memmove`以及高效的随机数生成库。
|
10天前
|
Java
JDK8中JVM堆内存划分
JDK8中JVM堆内存划分
11 0
|
11天前
|
Java 数据库连接 图形学
JVM内存泄漏检测与处理
JVM内存泄漏检测与处理
11 0
|
11天前
|
存储 机器学习/深度学习 Java
探索JVM 内存分配
探索JVM 内存分配
10 0
|
11天前
|
存储 Java 编译器
jvm内存结构
jvm内存结构
21 0

热门文章

最新文章