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

Java内存泄漏排查

内存泄漏排查

  • 1. 堆内存快照导出
  • 2. 导入内存分析工具

1. 堆内存快照导出


  1. 获取 Java 进程 ID

    • Windows:执行 jps 命令,或任务管理器查看,又或者执行 tasklist 命令。

      注意:当有多个 Java 进程时,任务管理器或 tasklist | findstr "java"无法区分特定进程,推荐使用 jps 命令

      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    • Linux

      docker exec -it <容器ID或容器名> bash		#容器启动需要先进入容器,非容器启动直接执行下一条命令
      ps -ef | grep java	#查找java进程的进程ID,或直接执行pgrep java查找,又或者直接执行JDK提供的jsp命令
      
  2. 使用 jmap 生成 Heap Dump 文件

    JDK 自带的一个命令行工具,可以用来生成 Java 进程的堆转储文件(heap dump),这个文件包含了 JVM 堆中所有对象的信息

    # 其中format=b表示输出为二进制格式,file=<output_file_path>指定输出文件的路径及名称,<pid>则是上一步找到的进程ID。
    jmap -dump:format=b,file="D:\Download\heap.prof" <pid>
    

2. 导入内存分析工具


常用的内存分析工具

  • VisualVM:VisualVM 是一个集成的工具,它允许开发者监控和分析Java应用程序的性能,包括内存使用情况、线程活动、编译器统计、垃圾收集行为等。VisualVM 随 JDK 发布一起提供,是一个非常强大的工具,适用于开发环境和生产环境的故障排查。

  • Eclipse Memory Analyzer (MAT):MAT 是一个专门用于分析 Java 应用程序内存消耗的工具。它可以从 JVM 中获取堆转储文件,并提供详细的内存分析报告,包括泄露检测、对象统计等。MAT 是一个独立的工具,可以离线分析堆转储文件。

  • IDEA Profiler:和 VisualVM 工具功能一致,但加载速度相当快,而且不占太多内存

推荐

当内存溢出时,如果-Xmx(最大堆内存大小)之前设置的很大,那么导出的 heap 文件也很大,因此堆内存分析时也会占用很大的内存

  • 如果自己能分析堆内存占用情况,推荐使用 IDEA Profiler(加载快,占用内存小)。
  • 如果需要工具自动分析,并提供泄露检测报告,推荐使用 MAT(加载慢,占用内存特别大,而且卡死过几次)。

JPS命令:https://blog.csdn.net/heihaozi/article/details/123441649


相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Ansible部署与应用基础
  • Git清除某文件所有历史提交记录
  • 【Redis】之Geo
  • 【机器学习】——线性回归(自我监督学习)
  • 秒变 Vim 高手:必学的编辑技巧与隐藏功能大揭秘
  • 【设计模式】UML类图
  • Streamlit:使用 Python 快速开发 Web 应用
  • <<编码>> 第 16 章 存储器组织(4)--内存 示例电路
  • C++ ——日期类的实现和注释浅解
  • mysql性能优化-SQL 查询优化
  • 12年计算机408考研-计算机网络
  • 解密.bixi、.baxia勒索病毒:如何安全恢复被加密数据
  • 利用AI增强现实开发:基于CoreML的深度学习图像场景识别实战教程
  • 【深度学习】(1)--神经网络
  • 将成功请求的数据 放入apipost接口测试工具,发送给后端后,部分符号丢失
  • python3.6+scrapy+mysql 爬虫实战
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Java教程_软件开发基础
  • MD5加密原理解析及OC版原理实现
  • Redis 中的布隆过滤器
  • 聚类分析——Kmeans
  • 盘点那些不知名却常用的 Git 操作
  • 转载:[译] 内容加速黑科技趣谈
  • 字符串匹配基础上
  • Android开发者必备:推荐一款助力开发的开源APP
  • 回归生活:清理微信公众号
  • ​【已解决】npm install​卡主不动的情况
  • ​数据链路层——流量控制可靠传输机制 ​
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • # 飞书APP集成平台-数字化落地
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #Linux(make工具和makefile文件以及makefile语法)
  • #window11设置系统变量#
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)计算机毕业设计ssm电影分享网站
  • (蓝桥杯每日一题)love
  • (七)Java对象在Hibernate持久化层的状态
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十六)串口UART
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)RocketMQ初步认识
  • (一)基于IDEA的JAVA基础12
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • ***php进行支付宝开发中return_url和notify_url的区别分析