Java内存泄漏排查

news/2024/9/22 22:43:43/

内存泄漏排查

  • 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



http://www.ppmy.cn/news/1529042.html

相关文章

桶排序和计数排序(非比较排序算法)

桶排序 桶排序是一种基于分配的排序算法&#xff0c;特别适合用来排序均匀分布的数据。它的基本思想是将输入的数据分到有限数量的桶里&#xff0c;然后对每个桶内的数据分别进行排序&#xff0c;最后再将各个桶内的数据合并得到最终的排序结果。(通常用于浮点数&#xff0c;因…

vue 中属性值上变量和字符串怎么拼接

在Vue 3中&#xff0c;可以使用模板字面量&#xff08;template literals&#xff09;或者表达式绑定&#xff08;directives&#xff09;来实现属性值上变量和字符串的拼接。 例如&#xff0c;假设你有一个变量text和一个字符串hello&#xff0c;你可以这样拼接它们&#xff…

ubuntu20.04编译mesa

依赖 # drm git clone https://gitlab.freedesktop.org/mesa/drm.git meson builddir/ ninja -C builddir/ install# wayland git clone https://gitlab.freedesktop.org/wayland/wayland.git meson setup builddir -Ddocumentationfalse ninja -C builddir/ install编译 sud…

Linux 动静态库

目录 一.静态库 1.理解静态库 a.什么是静态库&#xff1f; b.创建静态库的理论&#xff1f; 2.打包静态库 3.静态库的使用方法 a.头文件找不着 b.链接报错——库函数文件找不着 4.将静态库文件写到系统目录下 a.直接拷贝 b.建立软链接 二.动态库 1.什么是动态库&am…

Cassava Network 获得 Anubi 基金会战略投资,加速构建 Web3 领先平台

Cassava Network 作为一个以 Web3 社交任务为核心的平台&#xff0c;近日获得了来自 Anubi 基金会的战略投资。这一投资标志着 Cassava 在推动其成为 Web3 最大流量入口的使命上迈出了重要的一步。 Anubi 基金会战略投资 Anubi 基金会专注于 Web3 生态系统的应用&#xff0c;…

2024年自学手册 网络安全(黑客技术)

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、…

【计算机网络篇】数据链路层 功能|组帧|流量控制与可靠传输机制

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 系列文章目录 【计算机网络篇】计算机网络概述 【计算机网络篇…

Linux下的简单TCP客户端和服务器

客户端 #include <arpa/inet.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/socket.h>int main() {struct sockaddr_in* caddr(struct sockaddr_in*)malloc(sizeof(struct sockaddr…