当前位置: 首页 > news >正文

jvm内存溢出排查(使用idea自带的内存泄漏分析工具)

文章目录

  • 1.确保生成内存溢出文件
  • 2.使用idea自带的内存泄漏分析工具
  • 3.具体实验一下

1.确保生成内存溢出文件

想分析堆内存溢出,一定在运行jar包时就写上参数-XX:+HeapDumpOnOutOfMemoryError,可以看我之前关于如何运行jar包的文章。若你没有写。可以写上参数,重启你的项目,等你的项目发生下一次堆内存溢出异常,在运行的同级文件夹,将产生类似这样一个文件java_pid74935.hprof,若你已经有这个文件,那么可以继续往下看。
在这里插入图片描述

2.使用idea自带的内存泄漏分析工具

在Java界,有太多这样的工具了,如:

  • Eclipse Memory Analyzer(MAT):MAT是一个功能强大的内存分析工具,用于分析Java堆转储文件(如.hprof文件)。它可以帮助你识别内存泄漏、查找对象的引用链、分析对象的大小和数量等。MAT提供直观的图形界面和交互式报告,使你能够深入了解应用程序的内存使用情况。

  • VisualVM:VisualVM是一个功能齐全的Java虚拟机监控和分析工具。它包含了一系列插件和功能,可以监视应用程序的内存使用、线程状况、垃圾收集等。VisualVM还提供了堆转储和线程转储功能,方便你进行更详细的分析。

  • YourKit Java Profiler:YourKit是一款商业级的Java性能分析工具,具有强大的内存分析功能。它可以帮助你发现内存泄漏、定位内存消耗高的代码路径,并提供详细的对象和堆栈跟踪信息。YourKit还提供了实时的性能监控和分析,帮助你优化应用程序的性能。


这些工具的使用下载,百度谷歌都有相关资料。But!!!我这么懒的人你指望我下载一个工具去分析???成心难为我是吧!

我直接用idea!在新版本的idea里,有这么一个东西,像一个仪表盘,自打我学习Java,用上idea,一直不知道这是做什么的,直到今天为了搞内存分析,这可太神奇了,IDEA yyds!

在这里插入图片描述

小仪表盘的名字叫Profiler,至于这个Profiler在idea的哪里打开。谷歌给我的信息如下:

要使用CPU Profiler,请在IntelliJ IDEA 中打开「Run」菜单,然后选择「Profile CPU」。 您还可以在「View」菜单中选择「Tool Windows」,并选择「CPU Profiler」,以显示该工具的图形界面。

不过我这个idea2023版本貌似页面上就有。这里让我们打开溢出heap文件。

在这里插入图片描述
打开后页面如下

在这里插入图片描述

观察可知。大对象是哪个类,在哪一行产生,占据了多少内存,以及饼图其实都有,这里只是引路,至于内存分析的理论知识,就需要你再研究研究了。基于这一篇内容,你是可以知道如何用工具分析内存溢出文件,还有怎么产生内存溢出文件。

3.具体实验一下

在这里插入图片描述
如图,我刻意在这个类里写了个不断产生对象的代码,刻意制造堆溢出。然后分析可得。

在这里插入图片描述
直接检测到这个类的哪一行不断产生大对象导致堆溢出,easy~

http://www.lryc.cn/news/132274.html

相关文章:

  • JS内存泄漏
  • 线程和进程同步互斥你真的掌握了吗?(同步互斥机制保姆级讲解与应用)
  • Android 9.0 Vold挂载流程解析(上)
  • 界面组件Telerik UI for WinForms R2 2023——拥有VS2022暗黑主题
  • vue+elementui 实现文本超出长度显示省略号,鼠标移上悬浮展示全部内容
  • 【STM32RT-Thread零基础入门】 5. 线程创建应用(线程创建、删除、初始化、脱离、启动、睡眠)
  • 计算机竞赛 python+深度学习+opencv实现植物识别算法系统
  • 深度探索ChatGPT:如何进行专业提问以获取精确答案
  • 1.vue3+vite开发中axios使用及跨域问题解决
  • 【LangChain】P1 LangChain 应用程序的核心构建模块 LLMChain 以及其三大部分
  • 关于查看处理端口号和进程[linux]
  • C 语言的 strcat() 函数和 strncat() 函数
  • C++ string 的用法
  • MyBatis-Flex学习记录1---请各位大神指教
  • 二分查找旋转数组
  • 关于3D位姿旋转
  • 解锁项目成功的关键:项目经理的结构化思维之道
  • 力扣974被K整除的子数组
  • 简单认识Docker数据管理
  • UDP数据报结构分析(面试重点)
  • 【Java 动态数据统计图】动态数据统计思路案例(动态,排序,数组)二(113)
  • C++进阶 类型转换
  • Idea中隐藏指定文件或指定类型文件
  • 第2步---MySQL卸载和图形化工具展示
  • 原型和原型链
  • 解决ios隔空播放音频到macos没有声音的问题
  • LTPP在线开发平台【使用教程】
  • 0818 新增码表 git拉取代码
  • AI 绘画Stable Diffusion 研究(十)sd图生图功能详解-精美二维码的制作
  • C# File.ReadAllLines()报错