码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • OOM内存溢出分析


    Mat内存溢出dump文件分析工具http://www.eclipse.org/mat/downloads.php

    模拟OOM Java 程序

    1. package org.cj.oom;
    2. import java.util.ArrayList;
    3. import java.util.List;
    4. import java.util.concurrent.TimeUnit;
    5. /**
    6. * 创建内存分析
    7. * java启动参数指定内存 -Xms1m -Xmx1m
    8. * @author chenjian
    9. * @date 2022/11/18
    10. * @version 1.0
    11. */
    12. public class OomAnalysis {
    13. public static void main(String[] args) throws InterruptedException {
    14. new Thread(new Runnable() {
    15. @Override
    16. public void run() {
    17. List list = new ArrayList<>();
    18. while (true) {
    19. list.add(new OomAnalysis());
    20. }
    21. }
    22. }).start();
    23. while (true) {
    24. TimeUnit.SECONDS.sleep(3);
    25. }
    26. }
    27. }

    程序运行后会出现异常

    获取Dump文件方式

    1.主动方式获取dump文件

    使用 jps命令查询堆出现异常的进程名

    jps

    使用命令获取dump文件到指定目录

    jmap -dump:format=b,file=E:/test/headdump.hprof 14380

    2.通过制定Java vm 参数方式获取(推荐使用)

    -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=E:/test/heapdump1.hprof

    3.获得的文件如下图所示

    DUMP 文件分析

    1.打开Mat工具 MemoryAnalyzer.exe

    2.点击File -> Open Heap Dump ,点击 Finish

    3.点击切换视图

    4.发现大部分内存占用的是这个线程,占用了92.66%

    5.点开发现,内存空间是被一个 36万长度的数组给占据了,数组的元素是 OomAnalysis

    6.接下来要寻找出现这个问题的代码在哪里。再返回到最初的大饼图,点击最下面的details。然后点击See stacktrace 堆叠追踪。

    7.继续点击 Probblem Suspect 1详情中的 See stacktrace

    8.这里可以看到完整的堆栈信息,里面可以发现我们增加模拟溢出代码的那个Java文件,并且爆发内存溢出的代码行也可以对上,至此溢出分析结束。

    本文的内存分析针对性较强,实际情况 会有很多的干扰因素,我们需要从这些因素中找出真正的元凶。

    可以配合 Jstat 命令来一起分析OOM的原因,缩小排查的范围。

    jstat命令博客icon-default.png?t=M85Bhttps://blog.csdn.net/maosijunzi/article/details/46049117?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-46049117-blog-124800644.pc_relevant_3mothn_strategy_and_data_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-46049117-blog-124800644.pc_relevant_3mothn_strategy_and_data_recovery&utm_relevant_index=4

  • 相关阅读:
    Tomcat详解(全网最全,最好的)
    多目标优化算法:多目标霸王龙优化算法(MOTROA)MATLAB
    简单聊下STM32F103的GPIO
    mysql主从复制-使用心得
    JS加密/解密之那些不为人知的基础逻辑运算符
    《Learning from Context or Names?An Empirical Study on Neural Relation Extraction》论文阅读笔记
    Spring Security 之 JWT介绍
    什么是M365 Manager Plus?
    达人评测 i7 12800hx和i9 12900h选哪个好
    html5 文字自动省略,html中把多余文字转化为省略号的实现方法方法
  • 原文地址:https://blog.csdn.net/chenjian723122704/article/details/127917666
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号