您现在的位置是:首页 > 正文

怎样分析服务器的内存溢出文件,线上系统内存溢出分析方法

2024-04-01 01:32:25阅读 2

0e2bcb1bee6ce0b32fbca3fd623d0919.png点击上方蓝字关注我们0e2bcb1bee6ce0b32fbca3fd623d0919.png

一、生产环境

操作系统:CentOS6.7

JDK版本:jdk1.6.0_45

中间件版本:apache-tomcat-6.0.37

JVM堆内存配置:-Xms8192m-Xmx8192m

二、事件起因

系统前台应用节点告警“URL连接超时”

2.1 使用jstat命令—JVM统计监测工具对堆内存进行分析

jstat -gcutil PID

0ca79aef288efc8471d1273bf67b2d02.png

经过查看,JVM堆内存的年轻代和老年代使用率达到100%

2.2 生成HeapDump文件

Heap Dump是Java进程所使用的内存情况在某一时间的一次快照。以文件的形式持久化到磁盘中。

Heap Dump 获取方式

1、使用 jmap命令生成 dump文件

jmap-dump:live,format=b,file=./log/`hostname`heap.hprof

2、使用 jcmd命令生成 dump文件

jcmd GC.heap_dump app/share/dump/3.39/`date +%Y%m%d%H%M`heap.hprof

3、使用 JVM参数获取 dump文件

-XX:+HeapDumpOnOutOfMemoryError

当OutOfMemoryError发生时自动生成Heap Dump 文件。

45e5a8642b64fdffc28ed6175edf099b.png

本次dump文件为jmap命令手动生成。

2.3 上传至内网分析服务器

ftp -n

open 192.168.xxx.xxx

user username passwd

passive

binary

hash

lcd app/scripts/log #headdump路径

prompt

cd dump              #远程服务器路径

mput heap.hprof      #headdump文件

close

bye

三、利用MAT检查内存泄漏

3.1、打开MemoryAnalyzer软件,File --> Heap Dump --> next,选择对应的进程,等待MAT加载完成,点击Finish就可以进入MAT分析页面的首页。

c81e1a2eaf035bde85fa69d6f842766b.png

3.2、使用MAT的DominatorTree视图,定位到内存溢出源

通过DominatorTree视图可以很容易的找出占用内存最多的几个对象(根据RetainedHeap或Percentage排序)

f53d56d50aa88ef02f528b7d57fa0bac.png

efcb61ec394295d17da9523f00860cd4.png

以下为输出的线程信息:

82b689bbc3d1ecdf4b34d1c5959c5d04.png

通过分析我们发现cn.chinatowercom.crm.pub.common.StaticParam.queryStaticParam这个线程为可疑线程。交由开发排查发现该线程为导出时生成,导出数据量较大,从缓存获取的省市区信息,每次只能获取一条,循环翻译导致内存溢出。

1aad983558c056271e408f5b001f3d0d.pngEND

网站文章

  • 5月份华为认证考试,100%通过率!最高分九百多!

    5月份华为认证考试,100%通过率!最高分九百多!

    考试是最能测试出一个人最近一段时间的学习状态和对知识的掌握度。不然也不会有十年磨一剑只为高考这个道理了。自从西宇教育获得Pearson VUE国际认证考试中心的授权开通了PVUE考试中心。每天来考试的...

    2024-04-01 01:32:17
  • Javascript滚动条翻页数据动态加载

    Javascript Ajax滚动条翻页数据动态加载

    2024-04-01 01:32:13
  • SpringSecurity-权限校验就是这么简单(1)-如何初始化及加载多个Filter

    可能之前会省略很多,我们先了解总的概念实现,无须从头看到尾去解决某个问题了(1)SpringSecurity针对某个请求会有不同的SecurityFilterChain,而里面会有好多过滤器;也就是说我们会针对不同的请求来设置添加不同的过滤器,此场景主要用于分类、分路径请求的情况。(2)就是说说如何往SecurityFilterChain中加入不同的Filter,及加入的过程方式、注意事项...

    2024-04-01 01:32:07
  • uboot 源码官方下载地址

    uboot 源码官方下载地址

    分类: 嵌入式     U-BOOT 移植过程详解:添加一块新板子的支持http://blog.csdn.net/linuxarmsummary/article/details/44836229  最近打算开始学习uboot,得好好加油。   U-Boot,全称 Universal Boot Loader,是遵循GPL条款的开放源码项目。从FADSROM、...

    2024-04-01 01:31:41
  • 2023 Chatgpt AI绘图小说推文项目

    2023 Chatgpt AI绘图小说推文项目

    打开最强大的AI绘画工具midjourney,它能根据你提供的描述,生成任何画面。现在,我们将根据小说中描述的场景、人物和元素,告诉GPT需要生成的描述词,然后将其翻译成英文。复制这个描述,并在mid...

    2024-04-01 01:31:30
  • 基础-JAVA集合类型主要区别

    1、List,Set,Map三者的区别 List 储存一组不唯一的,有序的对象 Set 不允许重复 Map 使用键值对存储 key不能重复 2、ArrayList和LinkedList的区别 相同之处...

    2024-04-01 01:31:05
  • MySQL之事务

    MySQL之事务

    2024-04-01 01:30:58
  • 如何在 Mac 上映射网络驱动器

    如何在 Mac 上映射网络驱动器

    映射网络驱动器的最快方法是使用Finder应用程序。此方法将创建到您的网络驱动器的临时连接。但是,在您重新启动 Mac 后,它不会保留在原位。macOS 支持Samba (SMB) 网络共享。这是在 ...

    2024-04-01 01:30:51
  • 2020年华中科技大学计算机学院,2020年华中科技大学计算机应用技术考研经验分享...

    该楼层疑似违规已被系统折叠隐藏此楼查看此楼一、专业目录(101)思想政治理论(201)英语一(301)数学一(408)计算机学科专业基础综合二、参考书1. 《数据结构(C语言版)》严蔚敏 清华大学出版...

    2024-04-01 01:30:25
  • 男 女 java 枚举_java枚举类型知识点

    男 女 java 枚举_java枚举类型知识点

    原标题: java枚举类型知识点 public enum Color{RED,BLUE,BLACK,YELLOW,GREEN}enum很像特殊的class,实际上enum声明定义的类型就是一个类这些类...

    2024-04-01 01:30:17