使用pmap查看进程内存

运行命令

使用pmap可以查看某一个进程(非java的也可以)的内存使用使用情况,
命令格式:
pmap 进程id

示例说明

例如运行:
pmap 12358
显示结果如下图(内容较多, 分成几张图说明):
内容开始部分
内容结束部分
上图中,
第一列,内存块起始地址
第二列,占用内存大小
第三列,内存权限
第四列,内存名称,anon表示动态分配的内存,stack表示栈内存
最后一行,占用内存总大小,请注意,此处为虚拟内存大小,占用的物理内存大小可以通过top查看
 

使用jmap查看Java进程对象使用情况

运行命令

使用jmap可以查看某个Java进程中每个对象有多少个实例,占用多少内存,
命令格式:
jmap -histo 进程id

示例说明

例如运行:
jmap -histo  12538
显示结果如下图(内容较多, 分成几张图说明):
内容开始部分
内容结束部分
上图中:
第一列,序号,无实际意义
第二列,对象实例数量
第三列,对象实例占用总内存数,单位:字节
第四列,对象实例名称
最后一行,总实例数量与总内存占用数
 
另,部分示例说明(还没弄明白,后续补充):
[C,
[B,
[I,
[J,
[L,

使用jstat查看Java内存分布及回收情况

直接看这个帖子:
http://blog.csdn.net/zlzlei/article/details/46471627

命令格式

jstat命令命令格式:

jstat [Options] vmid [interval] [count]

参数说明:

Options,选项,我们一般使用 -gcutil 查看gc情况
vmid,VM的进程号,即当前运行的java进程号
interval,间隔时间,单位为秒或者毫秒
count,打印次数,如果缺省则打印无数次

示例说明

示例

通常运行命令如下:
jstat -gc 12538 5000
即会每5秒一次显示进程号为12538的java进成的GC情况,
显示内容如下图:
 

结果说明

显示内容说明如下(部分结果是通过其他其他参数显示的,暂不说明):
         S0C:年轻代中第一个survivor(幸存区)的容量 (字节) 
         S1C:年轻代中第二个survivor(幸存区)的容量 (字节) 
         S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节) 
         S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节) 
         EC:年轻代中Eden(伊甸园)的容量 (字节) 
         EU:年轻代中Eden(伊甸园)目前已使用空间 (字节) 
         OC:Old代的容量 (字节) 
         OU:Old代目前已使用空间 (字节) 
         PC:Perm(持久代)的容量 (字节) 
         PU:Perm(持久代)目前已使用空间 (字节) 
         YGC:从应用程序启动到采样时年轻代中gc次数 
         YGCT:从应用程序启动到采样时年轻代中gc所用时间(s) 
         FGC:从应用程序启动到采样时old代(全gc)gc次数 
         FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s) 
         GCT:从应用程序启动到采样时gc用的总时间(s) 
         NGCMN:年轻代(young)中初始化(最小)的大小 (字节) 
         NGCMX:年轻代(young)的最大容量 (字节) 
         NGC:年轻代(young)中当前的容量 (字节) 
         OGCMN:old代中初始化(最小)的大小 (字节) 
         OGCMX:old代的最大容量 (字节) 
         OGC:old代当前新生成的容量 (字节) 
         PGCMN:perm代中初始化(最小)的大小 (字节) 
         PGCMX:perm代的最大容量 (字节)   
         PGC:perm代当前新生成的容量 (字节) 
         S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比 
         S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比 
         E:年轻代中Eden(伊甸园)已使用的占当前容量百分比 
         O:old代已使用的占当前容量百分比 
         P:perm代已使用的占当前容量百分比 
         S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节) 
         S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节) 
         ECMX:年轻代中Eden(伊甸园)的最大容量 (字节) 
         DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满) 
         TT: 持有次数限制 
         MTT : 最大持有次数限制 

补充

发现一个不错的jmap,jstat等java分析工具的博客,如下:
http://blog.csdn.net/fenglibing/article/details/6411999
 

JDK内置工具使用

一、javah命令(C Header and Stub File Generator)

二、jps命令(Java Virtual Machine Process Status Tool)

三、jstack命令(Java Stack Trace)

四、jstat命令(Java Virtual Machine Statistics Monitoring Tool)

五、jmap命令(Java Memory Map)

六、jinfo命令(Java Configuration Info)

七、jconsole命令(Java Monitoring and Management Console)

八、jvisualvm命令(Java Virtual Machine Monitoring, Troubleshooting, and Profiling Tool)

九、jhat命令(Java Heap Analyse Tool)

十、Jdb命令(The Java Debugger)

十一、参考

http://www.renren.it/a/JAVAbiancheng/JAVAzonghe/20110511/jni-example.html

http://blog.csdn.net/gtuu0123/archive/2010/11/27/6039474.aspx

http://blog.csdn.net/kelly859/archive/2010/07/30/5775318.aspx

http://www.51testing.com/?uid-77492-action-viewspace-itemid-203728

http://blog.csdn.net/dengmc/archive/2009/05/13/4174738.aspx

http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jps.html

http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstat.html

http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jmap.html

http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html

分析java内存情况的更多相关文章

  1. 使用Xmanager分析Java内存情况

    今天是想看下程序在正式环境中,内存使用回收的情况,于是开始. 1.首先下载Xmanager,Xshell,然后在Xshell-设置-隧道中设置转发X11连接到Xmanager: 2.开始布置Linux ...

  2. Rails内存的问题 Java内存情况

    Rails内存的问题 Java内存情况 一个txt文件,100M,300万行,都是坐标数据: 需要进行坐标的变换.计算.比较: 在Rails中使用Ruby进行计算,会导致内存超过1.5G,最后溢出而亡 ...

  3. 使用MAT分析Java内存

    Overview MAT(Memory Analyzer Tool) 是一个JAVA Heaper分析器,可以用来分析内存泄露和减少内存消耗.分析Process showmap中的/dev/ashme ...

  4. JVM:查看java内存情况命令

    jmap (linux下特有,也是很常用的一个命令) 观察运行中的jvm物理内存的占用情况. 参数如下: -heap :打印jvm heap的情况 -histo: 打印jvm heap的直方图.其输出 ...

  5. 查看java内存情况命令

    转自:http://boendev.iteye.com/blog/882479 jinfo:可以输出并修改运行时的java 进程的opts. jps:与unix上的ps类似,用来显示本地的java进程 ...

  6. 查看java内存情况的几个常用命令

    java 命令简单查看jvm内存使用状况 jinfo:可以输出并修改运行时的java 进程的opts. jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序, ...

  7. 从一个OutOfMemoryError 学会了分析Java内存泄漏问题

    以前都是好好的,最近出现了 oom. 问题 开始是: java.lang.OutOfMemoryError: Java heap space -- :: --- [nio--exec-] c.e.p. ...

  8. mat工具MemoryAnalyzer进行分析java内存溢出hprof文件

    java服务端程序报错后会生成hprof文件,我们可以通过mat工具MemoryAnalyzer进行分析 下载地址: http://www.eclipse.org/mat/downloads.php ...

  9. 如何分析java内存泄漏问题

    java中的内存泄漏首先需要dump文件出来,主要包括内存dump.线程dump: 内存dump是指通过jmap -dump <pid>输出的文件,而线程dump是指通过jstack &l ...

随机推荐

  1. [转] ES6展开运算符

    语法 用于函数调用 myFunction(...iterableObj); 用于数组字面量 [...iterableObj, 4, 5, 6] 函数传参 目前为止,我们都是使用Function.pro ...

  2. A - Exposition CodeForces - 6E

    题目链接:https://vjudge.net/contest/202699#problem/A 题意 给一个n个元素的序列,从中挑出最长的子序列,要求子序列中元素差的最大值不超过k.问有几个最长子序 ...

  3. BeautifulSoup下Unicode乱码解决

    今天在用scrapy爬某个网站的数据,其中DOM解析我用的是BeautifulSoup,速度上没有XPath来得快,不过因为用了习惯了,所以一直用的bs,版本是bs4 不过在爬取过程中遇到了一些问题, ...

  4. 在 Xshell 中 使用 hbase shell 进入后 无法删除 问题

    在 Xshell 中 使用 hbase shell 进入后 无法删除 问题: 在hbase shell下,误输入的指令不能使用backspace和delete删除,使用过的人都知道,这是有多坑,有多苦 ...

  5. 【AtCoder】ARC075

    ARC075 在省选前一天听说正式选手线画到省二,有了别的女选手,慌的一批,然后刷了一个ARC来稍微找回一点代码感觉 最后还是挂分了,不开心 果然水平退化老年加重啊 原题链接 C - Bugged 直 ...

  6. Vue爬坑之路

    1.关闭eslint严格语法检查

  7. XXE (XML External Entity Injection) 外部实体注入漏洞案例分析

    ENTITY 实体 在一个甚至多个XML文档中频繁使用某一条数据,我们可以预先定义一个这条数据的“别名”,即一个ENTITY,然后在这些文档中需要该数据的地方调用它. XML定义了两种类型的ENTIT ...

  8. Flink--time-window 的高级用法

    1.现实世界中的时间是不一致的,在 flink 中被划分为事件时间,提取时间,处理时间三种. 2.如果以 EventTime 为基准来定义时间窗口那将形成 EventTimeWindow,要求消息本身 ...

  9. 解决centos中vsftpd中文乱码

    系统环境 [root@augusite yum.repos.d]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 软件版本 ...

  10. HDU2586How far away? LCA

    去博客园看该题解 题意 给出一棵树,以及每条边的权值,给出一些询问,每个询问是2个节点,求每个询问对应的2个节点的距离. 算法 LCA_Tarjan 代码 #include <cstring&g ...