- 浏览: 489383 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (139)
- JAVA (20)
- Database (11)
- Flex (2)
- OXM (1)
- Oracle (17)
- Persistence (2)
- IDE (5)
- Software Development (12)
- Operation System (22)
- Spring (1)
- Computer (3)
- WEB Server (6)
- Industry Applications (11)
- Project Management (1)
- Web Service (1)
- Linux (9)
- HTML (2)
- Crypto (1)
- Lucene (3)
- Hadoop (10)
- Java Script (2)
- Search (7)
- Python (1)
最新评论
-
bcabchappy:
win7下面无效:当前盘符:%~d0原样输出了
CMD获取当前目录的绝对路径 -
gpo:
很好
struts2文件上传如何限制上传文件类型(类型列表) -
zl0828:
很好的东西,顶你,分享
CMD获取当前目录的绝对路径
MAT 使用初探
今天线上一个应用的持久区满了,一直没有下来,导致一些服务不可用,就用jmap当出内存快照后,用MAT分析内存的基本信息,发现很多地方不会用。找了些资料记录在下来。
1.引用
- Strong reference : 就是我们new出来的对象,但是还是被持有的应用,垃圾回收时不会回收这个应用
- soft reference : 我们new出来的对象,但是已经不被具体对象持有,常见的就是缓存中的对象引用,垃圾回收在内存还够的时候不会回收该部分内存信息,只有在内存不够时才会回收这块引用的对象
- weak reference : 当对象不在有强引用时候,垃圾回收时立刻回收。
- Phantom reference : 不会在内存中出现,因为它一般是同ReferenceQueue一起出现,来跟踪对象是否还是保持强引用。
2.术语
shallow size:对象自身中有的内存大小
retained size:对象自身大小 + 该对象直接或是间接引用对象的shallow size
GC Roots:所有的对象引用refer chains的起点。
以上左图中以object1来说,单独一个object1大小就是shallow size,object1及所有蓝色对象就是该对象直接或是间接引用的就是retained size。
同理右图中object4还被gc roots引用到,那么retained size就不包含这个。
3.实例
3.1导入一个内存文件后,用MAT打开,具体如下图所表示
3.2 details:一些基本信息
Size: 153.7 MB Classes: 331 Objects: 4.1m Class Loader: 3 Unreachable Objects Histogram
3.3 biggest object by retained size:显示在内存较大的对象信息
list objects -- with outgoing references : 查看这个对象持有的外部对象引用。
list objects -- with incoming references : 查看这个对象被哪些外部对象引用。
show objects by class -- with outgoing references :查看这个对象类型持有的外部对象引用
show objects by class -- with incoming references :查看这个对象类型被哪些外部对象引用
paths to gc root : 显示不同类型引用(上文中提到的Strong ,soft,weak )到跟节点的路径。
merge shorest path to gc root : 合并最短路径到root节点,这个具体没试过。
java basics:
-- classloader 该对象对应的classloader信息 。
-- thread details :线程信息
-- thread stacks :线程堆栈
-- find String : 在这个对象中查询需要的字符串(还不确定,需要再搞下)
-- group by : 根据某个字段统计出现的个数
java collections:这个暂时没研究,以后再搞。
leak Identification -- top consumers :几个大消耗内存的对象
3.4 可用操作
actions:
Histogram: 列出每个类型的实例数及大小 。
donimator tree :列出所有对象在整个内存对象中所占百分比。比较有用。
Top Consumers: 根据类名和包名列出开销最大的对象。
Duplicate Classes: 查找出在不同classloader中加载的相同类。
step by step 方式
MAP提供了两种分析方式:
1.查找内存泄漏的方式分析内存
2.通过组件方式分析内存主要从;空对象,重复对象加载等方面。
这个在第一次加载内存文件,或者可以通过
总结:
1.首先看retained size最大的那些数据,一般看内存都是想解决内存泄漏问题,可以通过Top Consumers或者是donimator tree等actions。
2.找到最大的数据后,通过list objects -- with outgoing references 查看具体持有了哪些对象,或者通过java basics -- classloader 。查看这个是因为我们这次因为perm区满了,需要查看这个数据。到底还是哪些classloader加载了数据。
文献出处:http://blog.sina.com.cn/s/blog_4607d85601013n5r.html
发表评论
-
Eclipse中集成Tomcat
2016-07-11 21:46 467问题: 很多时候在Eclipse中启动Tmocat后,不能 ... -
DOS运行Java命令的同时添加依赖jar包及参数
2015-08-03 18:58 581方案一: java -classpath %classpat ... -
用myeclipse打jar包,使其包含依赖jar包的指向
2015-08-03 14:21 1975第一步:建目录,将依赖JAR包都拷贝到该目录下,比如我的这个 ... -
IBATIS Error getting ordinal list from JavaBean的特殊问题
2015-01-24 23:12 2204iBatis作为持久层的组件,为广大开发人员提供了极 ... -
GC 日志解读/分析
2014-07-15 18:10 971打印gc log的详细信息 Java代码 ... -
OpenSSL命令---req
2014-03-09 22:05 14960用途: 本指令用来创建和处理PKCS#10格式的证书。它还 ... -
Tomcat下配置BoneCP连接池
2013-10-21 20:10 1397公司的内部服务器,一直是采用的tomcat,连接池也是采用的 ... -
Hadoop集群的配置调优
2013-08-01 00:12 1162一、背景 Hadoop的集群使用也有些时候了,不过都是小集 ... -
Tomcat把JDBC驱动强行注销的问题
2013-01-26 02:50 2184异常:A web application regist ... -
JVM垃圾收集相关常用参数
2012-12-03 10:49 1770参 数 描 ... -
Tomcat中URIEncoding的使用
2012-08-10 14:51 1813tomcat5中,为了保证get数据采用UTF8编码,在 ... -
对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)
2012-07-13 15:09 5065对称加密和分组加密中的四种模式(ECB、CBC、CFB、 ... -
关于Jboss/Tomcat/Jetty的JNDI定义123
2012-05-08 21:15 1750貌似有段时间没来这里忽悠了,今天抽空接着忽悠下 ... -
Maven常用库
2012-03-26 11:54 1146http://search.maven.org Apa ... -
Maven 简要
2012-03-24 14:20 10071.前言 Maven,发音是[ ... -
使用Jacob操作Office 配置及结构简介
2012-03-10 22:11 78131、介绍 Jacob 是Java-COM ... -
Eclipse插件subclipse安装时JavaHL的问题(windows 7 64bit)
2012-02-14 22:14 1928在windows7中Java和eclipse都可以是64位的。 ... -
Velocity语法
2012-01-20 16:34 8327Velocity语法 1. 变量 (1)变量 ... -
7个改变世界的Java项目
2011-10-21 09:22 1587Java的开源生态系统是强大而健康的,这是我们(Oreill ... -
SVN: Could not resolve hostname
2011-09-16 09:13 12102svn co http://src.chromium.or ...
相关推荐
mat独立版Memory Analyzer Tool mac版 mat独立版Memory Analyzer Tool mac版
Memory Analyzer tool(MAT) 独立工具非eclipse非插件,还没有测试过友好分享,官网贼慢
MemoryAnalyzer又名MAT,用于android内存泄漏的hprof文件解析
Memory Analyzer tool(MAT) 独立工具非eclipse继承插件 超好用
MemoryAnalyzer 使用中文
MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。使用内存分析工具从众多的对象中进行分析,快速的计算出在内存...
MemoryAnalyzer使用说明文档/使用指南 Eclipse Memory Analyzer 是一个功能丰富且轻量的 Java 堆内存分析工具,可以用来辅助发现内存泄漏减少内存占用。 使用 Memory Analyzer 来分析生产环境的 Java 堆转储文件,...
MAT(Memory Analyzer Tool)工具是eclipse的一个插件,使用起来非常方便,尤其是在分析大内存的dump文件时,可以非常直观的看到各个对象在堆空间中所占用的内存大小、类实例数量、对象引用关系、利用OQL对象查询,...
在平时工作过程中,有时会遇到OutOfMemoryError,我们知道遇到Error一般表明程序存在着严重问题,可能是灾难性的。所以找出是什么原因造成...现在向大家引荐Eclipse Memory Analyzer tool(MAT),来化解我们遇到的难题。
MAT是分析Java堆内存的一个工具,全称是 The Eclipse ...MAT 软件版本解压后目录内有个MemoryAnalyzer.ini文件,该文件里面有个Xmx参数,该参数表示最大内存占用量,默认为1024m,根据堆转储文件大小修改该参数即可。
MemoryAnalyzer For Mac 百度网盘 解压后是mat.app。 类似执行以下命令:(注意换成自己的地址) /pllhome/software/Linux/mat.app/Contents/MacOS/MemoryAnalyzer -data ./workspace
Memory Analyzer Tool(MAT)工具是 eclipse 的一个插件(MAT 也可以单独使用),它分析大内存的 dump 文件时,可以非常直观的看到各个对象在堆空间中所占用的内存大小、类实例数量、对象引用关系、利用 OQL 对象查询,...
Eclipse Memory Analyzer是一款基于Eclipse的内存分析工具,mac版,不需要安装Eclipse,可以直接运行,用来分析内存泄漏等问题
资源名称:Eclipse MemoryAnalyzer,MAT(Memory Analyzer Tool) 文件名称:MemoryAnalyzer-1.12.0.20210602-win32.win32.x86_64.zip 描述: Eclipse Memory Analyzer是一个快速而功能丰富的Java堆分析器,可帮助您...
Memory Analyzer Tool(MAT)工具是 eclipse 的一个插件(MAT 也可以单独使用),它分析大内存的 dump 文件时,可以非常直观的看到各个对象在堆空间中所占用的内存大小、类实例数量、对象引用关系、利用 OQL 对象查询,...
最新版Memory Analyzer tool(MAT) 独立工具非eclipse集成插件
MAT MemoryAnalyzer JDK8版本,亲测有用~!
绝对好用,占用资源较少,性能分析工具之-- Memory Analyzer Tool(MAT) ,
MemoryAnalyzer主要用于分析jvm运行过程中导致内存溢出、内存泄漏的工具,MemoryAnalyzer主要用于分析jvm运行过程中导致内存溢出、内存泄漏的工具,MemoryAnalyzer主要用于分析jvm运行过程中导致内存溢出、内存泄漏...