文章目录

  • 1.安装JProfiler(本文使用JProfiler11)
  • 2.从服务器上将dump文件拿下来
  • 3.使用JProfiler打开
  • 4.查看Classes
  • 5.查看Reference
  • 6.查看
  • 7.查看Graph
  • 8.查看代码
  • 9.扩展

1.安装JProfiler(本文使用JProfiler11)

链接:https://pan.baidu.com/s/1VBHLIo8hIVGeeLjaBVjcIg
提取码:q5wl

在JProfiler的堆遍历器(Heap Walker)中,你可以对堆的状况进行快照并且可以通过选择步骤下寻找感兴趣的对象。堆遍历器有五个视图:

  1. 类 Classes
    显示所有类和它们的实例,可以右击具体的类"Used Selected Instance"实现进一步跟踪

  2. 分配 Allocations
    为所有记录对象显示分配树和分配热点

  3. 索引 References
    为单个对象和“显示到垃圾回收根目录的路径”提供索引图的显示功能。还能提供合并输入视图和输出视图的功能。

  4. 时间 Time
    显示一个对已记录对象的解决时间的柱状图。

  5. 检查 Inspections
    显示了一个数量的操作,将分析当前对象集在某种条件下的子集,实质是一个筛选的过程。

2.从服务器上将dump文件拿下来

3.使用JProfiler打开

打开比较久,需耐心等待,千万不要点skip

4.查看Classes

5.查看Reference

5.1 选择一个class或者biggest object

5.2 Use Slected Objects

5.3 Incoming references

  • incoming references
    显示这个对象被谁引用

  • outcoming references
    显示这个对象引用的其他对象

6.查看

7.查看Graph


8.查看代码


该方法主要用来导出数据报表,可以看出,当list数量太大时,就会导致OOM

9.扩展

生成Dump文件,JVM启动时添加参数:

#出现 OOME 时生成堆 dump:
-XX:+HeapDumpOnOutOfMemoryError
#生成堆文件地址:
-XX:HeapDumpPath=/home/xxx/logs/

9.1 linux tomcat

打开/tomcat_home/bin/catalina.sh文件

JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -server -Xms6144m -Xmx6144m -XX:NewSize=384m
-XX:MaxNewSize=450m -XX:PermSize=128m -XX:MaxPermSize=2048m
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/zyf/logs"


注:其中不设-XX:HeapDumpPath时,dump出的文件在/tomcat_home/bin目录下

9.2 linux springboot

nohup java -Xms2048m -Xmx2048m -XX:NewSize=384m -XX:MaxNewSize=450m -XX:PermSize=128m-XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/darren/logs/ -jar test.jar --spring.profiles.active=prod &

nohup java
-Xms2048m 指定堆内存初始化大小
-Xmx2048m 指定堆内存最大内存大小,
Xms设置和Xmx设置相同是为了避免频繁扩容和GC释放堆内存造成系统开销压力
-XX:NewSize=384m 新生代初始化内存的大小
-XX:MaxNewSize=450m 新生代可被分配的内存的最大上限(注意:该值需要小于-Xmx的值)
-XX:PermSize=128m 非堆区初始化内存分配大小
-XX:MaxPermSize=2048m 非堆区分配的内存的最大上限
-XX:+HeapDumpOnOutOfMemoryError 当JVM发生OOM时,自动生成DUMP文件
-XX:HeapDumpPath=/home/darren/logs/ 生成目录

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中

9.3 windows tomcat

打开/tomcat_home/bin/catalina.bat文件

set JAVA_OPTS=%JAVA_OPTS%
-server
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=D:\heapdump

JProfiler分析dump文件相关推荐

  1. jprofiler分析dump文件_内存溢出+CPU占用过高:问题排查+解决方案+复盘(超详细分析教程)...

    点击上方 "Java指南者"关注, 星标或置顶一起成长 免费送 1024GB 精品学习资源 来源:https://zhanghan.blog.csdn.net/article/de ...

  2. 使用MAT(Memory Analyzer Tool)工具分析dump文件--转

    原文地址:http://gao-xianglong.iteye.com/blog/2173140?utm_source=tuicool&utm_medium=referral 前言 生产环境中 ...

  3. c++ dump某个变量_linux内核调试之 crash分析dump文件

    Linux 下也有众多的内存转储分析工具,lcrash.Alicia.Crash.Crash 是由 Dave Anderson 开发和维护的一个内存转储分析工具,目前它的最新版本是 5.0.0. 在没 ...

  4. eclipse mat 分析dump文件,打开文件报错,out of memeory

    eclipse mat 分析dump文件,打开文件报错,out of memeory 解决: 1.打开eclipse报out of memeory通用 window-->Preferences- ...

  5. java模拟内存溢出并分析_本地模拟内存溢出并分析Dump文件

    java Dump文件分析 前言 dump文件是java虚拟机内存在某一时间点的快照文件,一般是.hprof文件,下面自己模拟一下本地内存溢出,生成dump文件,然后通过mat工具分析的过程. 配置虚 ...

  6. MAT分析dump文件显示大小比jmap查询结果小

    背景 有朋友向我吐槽,她在一台测试机器上调试,使用jmap查看堆内存占用时,发现年轻代+老年代占用的内存,和dump下堆转储文件使用MAT分析显示的内存不一样,百思不得其解.重现现象如下: jmap显 ...

  7. linux分析mat使用教程,使用MAT(Memory Analyzer Tool)工具分析dump文件

    <使用MAT(Memory Analyzer Tool)工具分析dump文件> 前言 生产环境中,尤其是吃大内存的JVM,一旦出现内存泄露等问题是非常容易引发OutofMemory的,如果 ...

  8. 生产内存溢出,通过jprofiler对dump文件进行分析

    选择"Open Snapshot",点击"Open a single Snapshot "加载dump文件. 若dump文件jProfiler无法识别,则可以直 ...

  9. 如何手动生成Dump文件并分析Dump文件

    大家都知道,当服务器出现蓝屏问题时,我们需要获取系统所产生的DUMP文件进行分析,如何确保在系统问题发生时,可以正确的生成所需要的DUMP文件呢?我们需要做如下检查: 1).右键点击"我的电 ...

最新文章

  1. 一个转角---程序猿
  2. Spring学习1之ioc
  3. 不能不知道的Docker知识
  4. python中的import详解_python中的import
  5. python连接数据库mysql错误1045_django 连接数据库出现1045错误的解决方式
  6. 西门子smartclient怎么用_Smart Client学习体会(一) Smart Client介绍
  7. python pytest mark.parametrize
  8. 从零开始学习音视频编程技术(41) H.264播放器
  9. 绕过查杀工具实现lsass转储
  10. UE4编辑器下Tick的实现
  11. android aso优化工具,App Store移动应用ASO优化工具:MobileDevHQ
  12. CyclicBarrier栅栏
  13. 使用Apache Ignite瘦客户端– Apache Ignite内部博客
  14. NXP IMX8系列应用处理器介绍
  15. 转行做程序员到底可不可行?转行前先考虑好以下几点
  16. hexo+github打造个人博客系列之Coding Pages去广告
  17. 给windows电脑重装系统
  18. android 唤醒屏幕
  19. Linux下的lds链接脚本二
  20. GitHub中Android开源项目及库汇总

热门文章

  1. 对象/关系数据库映射(ORM)
  2. I won't give up, I won't break down
  3. Hudson和Jenkins的关系
  4. Mac开启root权限
  5. 云队友丨风起云涌:腾讯转型十年记
  6. vue中解决小胡子的闪烁问题
  7. Word文件删除后怎么恢复?好用的恢复方法分享
  8. php 箭头符号怎么打开,php箭头的用法是什么?
  9. 启动未来城市数据中心的设想
  10. 从CreateFile(APP)到NtCreateFile(Kernel Mode)