---------------------------------------------mac os版------------------------------------------------------

MAT是内存分析工具

1、下载

http://www.eclipse.org/mat/downloads.php

MAC的下载地址

http://www.eclipse.org/downloads/download.php?file=/mat/1.8.1/rcp/MemoryAnalyzer-1.8.1.20180910-macosx.cocoa.x86_64.zip

2、解压后得到

3、运行并指定需要分析的dump文件,得到eclipse试图

4. 核心报表 class histogram

check 是否有超大对象滞留

--------------------------------------------------------------------------------windows----------------------------------------------------------------------------

1、mat 下载地址 https://www.eclipse.org/mat/downloads.php(注意本地jdk是64的就下载64位),下载下来解压就以用,同上macos差不多。

2、 jvisualvm,是jdk自带的,本地的打开本地jdk安装路径  jvisualvm.exe,mac os也可以打开。

****************************************************************重点如下*************************************************************************************

1、场景概述:内存溢出情况,如何定位去分析(Exception in thread "main"java.lang.OutOfMemoryError: Java heap space)

2、配置你的工程jvm启动参数加入重要参数(-XX:+HeapDumpOnOutOfMemoryError),这个参数配置完成后,系统发生OutOfMemoryError发生时自动生成 Heap Dump 文件,

然后分析dump文件,Java内存使用情况时,往往是在OOM(OutOfMemoryError)发生时。

操作例子如下:

1)创建一个demo工程,加入HeapLeak类

2)然后配置你的vm options参数:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\opt\HeapLeak.hprof

开发环境,测试环境,预发布环境,生产环境(可以在jenkins配置,大家可能没有权限)

3)运行结果,当出现内存溢出时,会生成dump文件

4)jvisualvm分析文件(可以是.dump结尾的文件也可以是.hprof的文件),查看概要基本信息中会指出oom的异常问题,

会找到你内存溢出的主因,查看如下:

5)mat分析文件,图中指出区域发生内存溢出的区域,点击details可以查看具体oom

补充版:

JProfiler 内存分析

下载地址:https://www.ej-technologies.com/products/jprofiler/overview.html

把dump 根式文件后缀修改为 hprof  并打开

打开 biggest Object  并且 点检show in graph

 

Eclipse MAT和jvisualvm分析内存溢出的更多相关文章

  1. JVM探秘:MAT分析内存溢出

    本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. MAT是分析Java堆内存的一个工具,全称是 The Eclipse Memory A ...

  2. 【Android】Eclipse Memory Analyzer 进行堆内存溢出分析

    MAT 不是一个万能工具,它并不能处理所有类型的堆存储文件.     不同厂家的 JVM 所生成的堆转储文件在数据存储格式以及数据存储内容上有很多区别,但是比较主流的厂家和格式,例如 Sun, HP, ...

  3. eclipse memory analyzer对系统内存溢出堆文件解析0(转)

    前言 在平时工作过程中,有时会遇到OutOfMemoryError,我们知道遇到Error一般表明程序存在着严重问题,可能是灾难性的.所以找出是什么原因造成OutOfMemoryError非常重要.现 ...

  4. eclipse memory analyzer对系统内存溢出堆文件解析(转)

    本文转之:https://blog.csdn.net/rachel_luo/article/details/8992461 前言 性能分析工具之-- Eclipse Memory Analyzer t ...

  5. Eclipse中启动tomcat时内存溢出

    今天在启动自己项目的时候遇到一个永久带(permgen space)内存溢出,查找了很多资料和请教了许多大神,最终才解决问题. 一.什么原因造成了永久带溢出: 1.项目使用了太多的静态变量 2.加载了 ...

  6. Java常见问题分析(内存溢出、内存泄露、线程阻塞等)

    Java垃圾回收机制(GC) 1.1 GC机制作用 1.2 堆内存3代分布(年轻代.老年代.持久代) 1.3 GC分类 1.4 GC过程 Java应用内存问题分析 2.1 Java内存划分 2.2 J ...

  7. MAT实战:JVM内存溢出的定位与分析

  8. 使用jdk自带工具jvisualvm 分析内存dump文件

    1.获取dump文件 使用 以下命令 创建 进程PID = 16231的 dump文件,命名为 order.hprof jmap -dump:format=b,file=order.hprof 162 ...

  9. eclipse使用jetty插件出现内存溢出解决方案

    系统运行在MAVEN中的jetty插件下,当在ECLIPSE运 clean jetty:run时系统提示 OutOfMemoryError: PermGen space. 解决办法:设置run as ...

随机推荐

  1. Python——列表赋值的若干用例

    原创声明:本文系博主原创文章,转载或引用请注明出处. 1. 直接赋值 >>> a = [1,2,3,4,5] >>> b = a >>> id(a ...

  2. Redis 与 MQ 的区别

    Redis是一个高性能的key-value数据库,它的出现很大程度补偿了memcached这类key-value存储的不足.虽然它是一个数据库系统,但本身支持MQ功能,完全可以当做一个轻量级的队列服务 ...

  3. Spring事务源码分析

    首先看例子,这例子摘抄自开涛的跟我学spring3. @Test public void testPlatformTransactionManager() { DefaultTransactionDe ...

  4. POI读取Excel如何判断行为空

    public static boolean isRowEmpty(Row row) { for (int c = row.getFirstCellNum(); c < row.getLastCe ...

  5. 使用pycharm,配置环境

    如果是使用virtualenv,请确保已激活运行环境 不知道怎么激活的,请按以下步骤来: 尝试使用终端通过更改目录(cd)命令导航到包含虚拟环境的文件夹.到达后,尝试输入: source ./venv ...

  6. 【leetcode】1283. Find the Smallest Divisor Given a Threshold

    题目如下: Given an array of integers nums and an integer threshold, we will choose a positive integer di ...

  7. js中彻底删除对象属性

    delete运算符可以删除对象的属性,但是仅仅是断开了属性和宿主对象的联系,而不会去操作被删除属性的属性值,所以就需要彻底删除的出现 function myDelete(obj,propertyNam ...

  8. java+实现上传文件夹

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小 ...

  9. 【一起学源码-微服务】Nexflix Eureka 源码二:EurekaServer启动之配置文件加载以及面向接口的配置项读取

    前言 上篇文章已经介绍了 为何要读netflix eureka源码了,这里就不再概述,下面开始正式源码解读的内容. 如若转载 请标明来源:一枝花算不算浪漫 代码总览 还记得上文中,我们通过web.xm ...

  10. Linux常用文本处理命令

    1.grep命令 echo 'zero\nzo\nzoo' | grep 'z.*o':将匹配以'z'开头以'o'结尾的所有字符串 echo 'zero\nzo\nzoo' | grep 'z.o': ...