记录一次内存泄漏追踪(一)

简介: 记录一次内存泄漏追踪(一)

一 背景

项目上线后出现jvm内存过高的情况,并且运行一段时间后会出现内存溢出。


二 分析

  1. 查看项目状态

image.png

可以看到现在使用内存已经达到了12g并且没有内存溢出,推测存在内存泄漏情况

  1. 下载jvm内存快照

    • 查看容器中的java进程pid,找到服务的pid

      jps -lv

    • 下载内存快照

      jmap -dump:format=b,file=head.bin pid

  2. 查看内存快照

    通过检查具体的内存使用情况来进一步定位问题
    
    通过visualvm来转入快照
    
    
    

image.png

 
 
注意visualvm要调整识别文件后缀为hprof文件

image.png

 
 准入后我们可以查看具体的快照信息
 
 

image.png

 
 
查看内存各个类型占比

image.png

发现byte[]类型占比较高,char类型占比也比较高,还有int[]类型,并没有看到哪个对象占用内存很高,其实对象本身如果不是实例数太多,也就是被new了很多次,他本身占用内存其实没那么多,但是其中引用的成员变量,如果很大那么就会占用很多内存,而这部分成员变量是存储在堆区的,也就是byte[] char,String等类型。但是这部分占用比例较高的char[]是由谁来引用呢?我们看看下图

image.png

上图就是具体的实例信息,可以看到引用实例与大小,不过很遗憾,从上面并没有看到具体的内容。

## 三 结语

visualvm是很出名了分析jvm内存的工具,但是在这次排查中并没有看到具体的问题点,在问题的追踪过程中,找到了另一个工具MAT,这个工具可以更详细的对内存快照进行分析,下一篇会写MAT工具对内存快照的分析。

相关文章
|
存储 网络虚拟化 索引
【OSTEP】分页(Paging) | 页表中究竟有什么 | 页表存在哪 | 内存追踪
【OSTEP】分页(Paging) | 页表中究竟有什么 | 页表存在哪 | 内存追踪
564 0
|
8月前
|
缓存 运维 监控
Anolis OS深度集成运维利器 阿里云操作系统控制台上线
阿里云在百万服务器运维领域的丰富经验打造。
Anolis OS深度集成运维利器 阿里云操作系统控制台上线
|
8月前
|
缓存 运维 监控
追踪隐式资源,巧解内存难题!阿里云操作系统控制台上线
在云计算和容器化部署环境中,云原生容器化已成为行业标准,带来高效部署和成本控制优势的同时,也伴随新的挑战。通过操作系统内存全景功能,可一键扫描诊断,提升运维效率、降低成本,并显著提高系统稳定性。
|
Ubuntu 架构师 Linux
内存泄露专题(5)动态内存追踪大杀器:bcc
内存泄露专题(5)动态内存追踪大杀器:bcc
436 0
|
架构师 Unix Linux
内存泄露专题(4)mtrace内存追踪
内存泄露专题(4)mtrace内存追踪
439 0
|
监控 Java Android开发
记录一次内存泄漏追踪(二)
记录一次内存泄漏追踪(二)
|
编解码 监控 NoSQL
疑案追踪:Spring Boot内存泄露排查记
疑案追踪:Spring Boot内存泄露排查记
1056 0
疑案追踪:Spring Boot内存泄露排查记
|
3月前
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
942 0
|
3月前
|
存储 缓存 NoSQL
内存管理基础:数据结构的存储方式
数据结构在内存中的存储方式主要包括连续存储、链式存储、索引存储和散列存储。连续存储如数组,数据元素按顺序连续存放,访问速度快但扩展性差;链式存储如链表,通过指针连接分散的节点,便于插入删除但访问效率低;索引存储通过索引表提高查找效率,常用于数据库系统;散列存储如哈希表,通过哈希函数实现快速存取,但需处理冲突。不同场景下应根据访问模式、数据规模和操作频率选择合适的存储结构,甚至结合多种方式以达到最优性能。掌握这些存储机制是构建高效程序和理解高级数据结构的基础。
280 1

热门文章

最新文章