Tomcat内存分析相关方法(jmap和mat)
Linux环境命令行
首先,根据进程命令,获取运行的tomcat的进程ID
ps aux | grep tomcat | grep java | grep bsc
在第二列可以看到进程ID
然后使用jmap可以查看内存占比:
/home/work/bsc/java/jdk-1.7-7u60/bin/jmap -heap 7840
输出的结果包括了内存各个部分的占比:
[work@xxxx.com logs]$ /home/work/bsc/java/jdk-1.7-7u60/bin/jmap -heap 10433 Attaching to process ID 10433, please wait... Debugger attached successfully. Server compiler detected. JVM version is 24.60-b09 using parallel threads in the new generation. using thread-local object allocation. Concurrent Mark-Sweep GC Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 8388608000 (8000.0MB) NewSize = 1048576000 (1000.0MB) MaxNewSize = 1048576000 (1000.0MB) OldSize = 5439488 (5.1875MB) NewRatio = 2 SurvivorRatio = 8 PermSize = 134217728 (128.0MB) MaxPermSize = 268435456 (256.0MB) G1HeapRegionSize = 0 (0.0MB) Heap Usage: New Generation (Eden + 1 Survivor Space): capacity = 943718400 (900.0MB) used = 393328672 (375.1074523925781MB) free = 550389728 (524.8925476074219MB) 41.67860582139757% used Eden Space: capacity = 838860800 (800.0MB) used = 288471072 (275.1074523925781MB) free = 550389728 (524.8925476074219MB) 34.388431549072266% used From Space: capacity = 104857600 (100.0MB) used = 104857600 (100.0MB) free = 0 (0.0MB) 100.0% used To Space: capacity = 104857600 (100.0MB) used = 0 (0.0MB) free = 104857600 (100.0MB) 0.0% used concurrent mark-sweep generation: capacity = 1288736768 (1229.03515625MB) used = 706435104 (673.7090148925781MB) free = 582301664 (555.3261413574219MB) 54.816089797478334% used Perm Generation: capacity = 134217728 (128.0MB) used = 65034240 (62.021484375MB) free = 69183488 (65.978515625MB) 48.45428466796875% used 27139 interned Strings occupying 3055832 bytes.
如上可以清楚的看到内存配置信息、年轻代(包括eden、from、to)、老年代、永久代各自的内存信息和占比。
使用Eclipse的memory analysis tool工具进行详细分析
首先,使用命令将内存dump到文件:
/home/work/bsc/java/jdk-
MAT(Memory Analyzer Tool)工具是eclipse的一个插件,使用起来非常方便,尤其是在分析大内存的dump文件时,可以非常直观的看到各个对象在堆空间中所占用的内存大小、类实例数量、对象引用关系、利用OQL对象查询,以及可以很方便的找出对象GC Roots的相关信息,当然最吸引人的还是能够快速为开发人员生成内存泄露报表,方便定位问题和分析问题。
然后就可以查看内存中的数据,点击饼图,也可以看下占比最大的对象是什么,从而分析程序的行为。
Tomcat内存分析相关方法(jmap和mat)的更多相关文章
- Android内存分析工具DDMS heap + MAT 安装和使用
一 Java内存分析工具扫盲 如果像我一样一点都不了解,可以先进行内存分析工具扫盲 MAT介绍: Eclipse Memory Analyzer(MAT)一个功能丰富的 JAVA 堆转储 ...
- Java内存分析工具jmap
1. jmap 1.1 概述 JVM Memory Map命令用于生成heap dump文件,如果不使用这个命令,还可以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机 ...
- jvm堆内存模型原理分析及堆内存分析工具jhat和MAT的使用超详细教程
- 【Java线程与内存分析工具】VisualVM与MAT简明教程
目录 前言 VisualVM 安装与配置 本地使用 远程监控 MAT 使用场景 安装与配置 获得堆转储文件 分析堆转储文件 窥探对象内存值 堆转储文件对比分析 总结 前言 本文将简要介绍Java线程与 ...
- [转]一次使用Eclipse Memory Analyzer分析Tomcat内存溢出
一次使用Eclipse Memory Analyzer分析Tomcat内存溢出 前言 在平时开发.测试过程中.甚至是生产环境中,有时会遇到OutOfMemoryError,Java堆溢出了,这表明程序 ...
- 利用MAT玩转JVM内存分析(一)
本文首发于公众号:javaadu 尽管JVM提供了自动内存管理的机制,试图降低程序员的开发门槛,确实也实现了这一目标,在日常开发中,我们一般都不需要关心对象的内存释放.JVM大部分都是使用trace算 ...
- 利用jmap和MAT等工具查看JVM运行时堆内存
jmap JDK自带了一些工具可以帮助我们查看JVM运行的堆内存情况,常用的是jmap命令 jmap -heap <pid> 打印堆的使用情况 那么,从这个输出中我们也可以大致看出堆的结构 ...
- Eclipse MAT内存分析工具(Memory Analyzer Tool)
MAT内存分析工具 MAT是Memory Analyzer的简称,它是一款功能强大的Java堆内存分析器.可以用于查找内存泄露以及查看内存消耗情况.MAT是基于Eclipse开发的,是一款免费的性能分 ...
- 内存分析工具-MAT(Memory Analyzer Tool)
内存分析工具-MAT(Memory Analyzer Tool) 首先查看如下代码,main函数中有一个成员变量map,map里被循环放入对象Hanson,hanson持有姓名和age还有friend ...
随机推荐
- hdu 1220组合数学
两个立方体相交的点数有0 1 2 4 不考虑相交点数的话有C(n,2)个立方对. 而求不超过两个交点的对数,即为用总的减去有四个交点的对数,而四个交点即为同面 四个交点的对数为相同的面的个数为(所有的 ...
- poj1330 lca 最近公共祖先问题学习笔记
首先推荐两个博客网址: http://dongxicheng.org/structure/lca-rmq/ http://scturtle.is-programmer.com/posts/30055. ...
- C结构体里的冒号
unsigned m_ScrollType : 3; //uint型,占3bit; unsigned m_ScrollDirection ...
- 20180828Zabbix3使用percona-zabbix-templates监控MySQL
引用网址: http://blog.chinaunix.net/uid-16844903-id-3535535.html http://www.ywnds.com/?p=6199 https://ww ...
- HBase(0.96)新的Java API操作
package test; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.ap ...
- 极光推送案例-PushExample-Jpush
ssh - maven - java项目-极光注冊id完毕推送 这是我学习时的步骤: 1:去极光推送平台注冊账号,自己能够去注冊(一般公司会帮助完毕注冊) 地址:https://www.jpush.c ...
- 关东升的《从零開始学Swift》即将出版
大家好: 苹果2015WWDC大会公布了Swift2.0,它较之前的版本号Swift1.x有非常大的变化.所以我即将出版<从零開始学Swift><从零開始学Swift>将在&l ...
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 介绍SP2013中远程APIs
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 介绍SP2013中远程APIs 当SP首次開始 ...
- vim copy termi
用vim写代码时,经常遇到这样的场景,复制多行,然后粘贴. 这样做:1. 将光标移动到要复制的文本开始的地方,按v进入可视模式.2. 将光标移动到要复制的文本的结束的地方,按y复制.此时vim会自动将 ...
- Yslow on Nodejs server
1. 目的:用yslow测试某个页面的性能 2. 需求:返回yslow测试后的数据,显示在页面 方法一. nodejs 需要把网址打包为har格式... 方法二. phantomjs 步骤: 1. 安 ...