美文网首页
如何排查Java应用内存泄漏问题

如何排查Java应用内存泄漏问题

作者: 西北偏北 | 来源:发表于2020-11-23 21:36 被阅读0次

什么是内存泄漏

内存泄漏是指java应用的堆内存使用率持续升高,直至内存溢出。
内存泄漏的的原因可能有多种

  • 分配给应用程序的内存本身过小。而应用的业务代码,确实需要生成大量的对象
  • 代码bug,某些需要被回收的对象,由于代码bug,却持续的被引用,导致java虚拟机无法回收这些对象。从而撑爆内存

无论哪种内存泄露,我们的解决方法都是要定位到具体是什么对象,占用了大量内存,从而方便我们基于此进行代码分析,debug,找出代码问题。
而能够帮助我们实现这一目的的方式就是获取java应用的内存 dump

如何获取内存dump

使用命令获取jcmd

首先需要获取java 进程id,获取到java进程后
使用命令

jcmd <pid> GC.heap_dump <file-path>

如果执行报错

com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded

一般是由于执行jcmd的用户同java应用本身不是同一个用户。解决办法是切换到应用对应的用户下再执行上述命令

sudo -u [userid] /jcmd <pid> GC.heap_dump <file-path>

如果应用在本地

如果应用是在本地,除了用上述方法外,还可以用JVisualVM 、JConsole

程序异常退出时自动dump

但更为重要的,为了准确还原应用故障的现场,最好通过指定java 执行参数,在程序出错时,自动dump

java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<file-or-dir-path>

如何分析内存dump

获取到dump文件后,需要使用eclipse.org 出品的 Memory Analyzer 工具。使用其中的Dominator Tree,查看各对象的内存占用情况


file

找出占用内存最多的对象及其类信息


file

参考资料

https://www.baeldung.com/java-heap-dump-capture
https://www.cnblogs.com/alcc/p/9905705.html
https://www.eclipse.org/mat/

欢迎关注我的个人公众号"西北偏北UP",记录代码人生,行业思考,科技评论

相关文章

  • 如何排查Java应用内存泄漏问题

    什么是内存泄漏 内存泄漏是指java应用的堆内存使用率持续升高,直至内存溢出。内存泄漏的的原因可能有多种 分配给应...

  • JDK的bin下的工具有哪些功能

    Java生产环境下问题排查 Java内存泄漏分析系列之一:使用jstack定位线程堆栈信息 Java内存泄漏分析系...

  • 内存检测问题

    1.如何检测内存问题 内存泄漏:在基于Java的运行中,内存泄漏是一种编程错误,它会导致应用程序对已经不需要再使用...

  • 如何检测内存泄漏

    1.如何检测内存问题 内存泄漏:在基于Java的运行中,内存泄漏是一种编程错误,它会导致应用程序对已经不需要再使用...

  • 内存泄漏的检测与解决方法

    实训通关第三期 1.如何检测内存问题 内存泄漏:在基于Java的运行中,内存泄漏是一种编程错误,它会导致应用程序对...

  • 应用 "内存泄漏"排查

    现象:应用启动后,容器内存,jvm内存 持续增加。见图 图1 容器内存使用图 图2 应用启动时jvm堆内存使用图 ...

  • iOS 内存泄漏排查方法及原因分析

    本文将从以下两个层面解决iOS内存泄漏问题: 内存泄漏排查方法(工具) 内存泄漏原因分析(解决方案) 在正式开始前...

  • 使用 Memory Profiler 排查内存泄露

    使用 Memory Profiler 排查内存泄漏 内存泄漏和内存溢出 **Memory Profiler **是...

  • 如何排查java应用中CPU使用率高或内存占用高的问题

    如何排查java应用中CPU使用率高或内存占用高的问题?这类问题的排查步骤基本通用的。现在通过一个具体的例子来说明...

  • JAVA应用内存泄漏排查记录

    最近公司的一台服务器频繁报警,老大让我研究下代码出了什么问题,咋一看才知道代码是用大名鼎鼎的异步框架Vert.x写...

网友评论

      本文标题:如何排查Java应用内存泄漏问题

      本文链接:https://www.haomeiwen.com/subject/jsfbiktx.html