# Memory Analyzer使用简介

markdown格式渲染异常请阅读附件。

- [Memory Analyzer使用简介](#memory-analyzer使用简介)

- [MAT 简介](#mat-简介)

- [安装](#安装)

- [图形界面使用方式](#图形界面使用方式)

- [命令行使用方式](#命令行使用方式)

- [线程dump](#线程dump)

- [堆dump](#堆dump)

- [图形渲染与显示问题](#图形渲染与显示问题)

## MAT 简介

分析JVM堆dump, 线程dump的工具,具体介绍参考官网 。

使用教程 。

## 安装

- 根据下载页面的信息, 安装合适的JDK版本(如1.8), 配置 `JAVA_HOME`, `PATH` 等环境变量。

- 下载MAT,解压,添加到 `PATH` 环境变量中。

- 根据需要调整MAT的JVM参数,配置文件 `MemoryAnalyzer.ini`。

- 如果要在没有图形界面的linux系统上使用,可能要安装图形渲染依赖。

- redhat系列可以使用 `yum groupinstall x11` 安装依赖。

- debian系列 `apt install x-window-system-core`。

- 可能需要安装一些字体:`yum install xorg-x11-fonts* wqy*` 或 `apt install wqy*`

## 图形界面使用方式

直接打开软件,从菜单打开dump文件分析,默认生成的分析视图可以比较清晰的看出堆内的内存占用情况。

## 命令行使用方式

官方文档称为 `Batch mode`。

使用命令方式分析dump文件,会在dump文件所在目录生成3个zip文件。将zip文件解压到特定目录,使用浏览器打开目录里面的index.html查看分析结果。

```bash

$ ParseHeapDump.sh /mnt/tmp/dump.hprof org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components

# 执行后产生的结果

-rw-r--r-- 1 root   root 235K Jun 19 09:43 dump_Top_Components.zip

-rw-r--r-- 1 root   root  84K Jun 19 09:43 dump_System_Overview.zip

-rw-r--r-- 1 root   root  98K Jun 19 09:43 dump_Leak_Suspects.zip

```

>For a simple suspects report use org.eclipse.mat.api:suspects

>

>For an overview report use org.eclipse.mat.api:overview

>

>For a report on memory usage by component use org.eclipse.mat.api:top_components

>

>To compare two heap dumps use./mat/ParseHeapDump.sh myheapdump.hprof -snapshot2=myheapdump2.

>hprof org.eclipse.mat.api:compare

## 线程dump

```bash

jstack -l {$pid} >> jstack.tdump

```

## 堆dump

```bash

jmap -dump:format=b,file=dump.hprof {$pid}

```

## 图形渲染与显示问题

错误信息类似

>Failed to create a browser because of: org.eclipse.swt.SWTException: Failed to execute >runnable (org.eclipse.swt.SWTError: No more handles because no underlying browser available.

>org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.swt.SWTError: XPCOM >error -2147467259)

>

>Failed to create a browser because of: No more handles because no underlying browser >available. Please ensure Webkit with its Gtk 3.x bindings installed. Webkit2 API level >preferred.

主要是缺少图形渲染使用的包: webkit2gtk.

>Note:

>On a Linux®1 system, make sure that webkit2gtk-4.0 is installed.

>

>Select the latest version available of webkit2gtk-4.0 and install it.

>

>On an Ubuntu®2 Linux® system use commands such as

>

>sudo apt-get update

>sudo apt-get install libwebkit2gtk-4.0

>

>On a Red Hat®3 Linux® system use yum

>

>yum install webkitgtk4

>

>The operating system should confirm that webkit2gtk-4 has been properly installed

>

>Restart Memory Analyzer

>

>Open a heap dump.

mat 内存分析 Linux,JVM内存分析工具MAT使用简介相关推荐

  1. Java 内存模型和 JVM 内存结构真不是一回事

    这两个概念估计有不少人会混淆,它们都可以说是 JVM 规范的一部分,但真不是一回事!它们描述和解决的是不同问题,简单来说, Java 内存模型,描述的是多线程允许的行为 JVM 内存结构,描述的是线程 ...

  2. JVM虚拟机学习 - JVM类加载,JVM内存模型,JVM性能分析工具

    JVM虚拟机 二 JVM类加载 类的生命周期 加载: ​ 加载class文件到二进制字节流,然后再将二进制字节流转化为方法区的运行时数据结构,生成一个对应的Class对象作为类各种数据的访问入口. 链 ...

  3. linux进程实际内存大小,Linux进程内存用量分析之堆内存篇

    本文将介绍几种内存泄漏检测工具,并通过实际例子介绍一种分析堆内存占用量的工具和方法,帮助定位内存膨胀问题.背景 进程的内存管理是每一个开发者必须要考虑的问题,对于C++程序进程来说,出现问题很多情况下 ...

  4. Linux 踩内存 slub,Linux SLUB 内存分配器分析

    本文简介 本文主要介绍了Linux SLUB分配的产生原因.设计思路及其代码分析.适合于对Linux内核,特别是对Linux内存分配器感兴趣的读者. 1.为何需要SLUB? Linux SLUB内存分 ...

  5. Java内存泄露和内存溢出、JVM命令行工具、.JDK可视化工具、Java Class文件

    1.Java内存泄露和内存溢出对比 1.1 Java 内存泄露 内存泄露是指一个不再被程序使用的对象或变量还在内存中占用空间. 1.1.1判断内存空间是否符合垃圾回收的标准 在Java语言中,判断一个 ...

  6. tomcat 设置java内存_Tomcat 设置JVM内存大小

    我的服务器的配置: # OS specific support.  $var _must_ be set to either true or false. JAVA_OPTS="-Xms10 ...

  7. java tomcat jvm内存_Tomcat修改JVM内存,修改了就是不生效,

    设置Tomcat启动的初始内存其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4. 可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置 三.实例,以下给 ...

  8. linux进程的内存空间,Linux进程内存统计

    一. 进程内存统计 cat /proc/[pid]/status 通过/proc/[pid]/status可以查看进程的内存使用情况,包括虚拟内存大小(VmSize),物理内存大小(VmRSS),数据 ...

  9. linux显示内存状态,Linux显示内存状态

    Linux显示内存状态 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free total used free shared buffers cached M ...

最新文章

  1. 第19讲:Pyppeteer 爬取实战
  2. 分页探究--Filter+JSTL
  3. 【DOM编程艺术】position属性
  4. html 悬浮在固定位置,纯CSS实现DIV悬浮(固定位置)
  5. Java中简单Http请求
  6. html5制作前端优势,HTML5前端开发原来有这么多优势!
  7. PayPal支付开发
  8. 说说3D打印培训课程在我国的开展的现状——3D打印培训宁波清车
  9. 计算机函数的应用知识点总结,计算机应用 常用函数的使用 常用函数的使用.pptx...
  10. MATLAB 线性拟合
  11. 小码哥php教程,小码哥Java从0到高级工程师
  12. 2021爱分析・数据智能平台实践报告—重构数据智能时代的数据基础设施
  13. 端口占用解决:Web server failed to start. Port 8081 was already in use.
  14. 三轴加速度传感器BMA250解读
  15. 《吐血整理》顶级程序员工具集
  16. 2022广东专升本计算机真题讲解
  17. redis出现WRONGTYPE Operation against a key holding the wrong kind of value错误
  18. 周易哲学(一):干支纪年法和四柱八字
  19. Windows API详情
  20. ITECH IT63XX/ IT90XX系列可编程直流电源RS-232调试记录

热门文章

  1. 优酷视频如何在手机进行安全设置?
  2. Vue.js中data,props和computed数据
  3. Mybatis的xml配置实例
  4. mysql 重装之后_mysql重装之后 复制data
  5. mysql oa数据库设计_OA项目1:环境搭建之数据库创建与环境添加
  6. HIVE 数据倾斜浅谈
  7. docker mysql5.7 主从_docker-compose mysql5.7.30 主从
  8. 微信小程序服务器域名修改生效时间,微信小程序修改request合法域名不生效及解决方法...
  9. 传统form表单提交方式的文件上传与文件存储
  10. php 用户授权访问控制,用户权限访问控制功能