jmap查看内存使用情况与生成heapdump

如果想分析自己的JAVA Application时,可以使用jmap程序来生成heapdump文例:

jmap -heap 1234  (1234为进程号)

jmap是JDK自带的一个工具,非常小巧方便,其支持参数如下:

 -heap:打印heap空间的概要,这里可以粗略的检验heap空间的使用情况。
例:
jmap -heap 12345
输出:
Attaching to process ID 2657, please wait...
Debugger attached successfully.
Client compiler detected.
JVM version is 1.5.0_16-b02
 
using thread-local object allocation.
Mark Sweep Compact GC
 
Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 67108864 (64.0MB)
   NewSize          = 655360 (0.625MB)
   MaxNewSize       = 4294901760 (4095.9375MB)
   OldSize          = 1441792 (1.375MB)
   NewRatio         = 12
   SurvivorRatio    = 8
   PermSize         = 8388608 (8.0MB)
   MaxPermSize      = 67108864 (64.0MB)
 
Heap Usage:
New Generation (Eden + 1 Survivor Space):----------------------------------------新生代区
   capacity = 4521984 (4.3125MB)
   used     = 1510200 (1.4402389526367188MB)
   free     = 3011784 (2.8722610473632812MB)
   33.39684527853261% used
Eden Space:--------------------------------------------------------------------伊甸园区

capacity = 4063232 (3.875MB)
   used     = 1495992 (1.4266891479492188MB)
   free     = 2567240 (2.4483108520507812MB)
   36.81778446320565% used
From Space:-------------------------------------------------------------------年轻代(幸存者乐园1)

capacity = 458752 (0.4375MB)
   used     = 14208 (0.0135498046875MB)
   free     = 444544 (0.4239501953125MB)
   3.0970982142857144% used
To Space:-----------------------------------------------------------------------------年轻代(幸存者乐园2)
   capacity = 458752 (0.4375MB)
   used     = 0 (0.0MB)
   free     = 458752 (0.4375MB)
   0.0% used

concurrent mark-sweep generation:-------------------------------------------------老年代
capacity = 8589934592 (8192.0MB)
used = 0 (0.0MB)
free = 8589934592 (8192.0MB)
0.0% used

Perm Generation:----------------------------------------------------------------------永久代
   capacity = 11796480 (11.25MB)
   used     = 11712040 (11.169471740722656MB)
   free     = 84440 (0.08052825927734375MB)
   99.28419325086806% used

以上的输出很简单,第四行起开始输出此进程我们的JAVA使用的环境。
Heap Configuration,指在我们启动时设置的一些JVM参数。像最大使用内存大小,年老代,年青代,持久代大小等。有这个可以很简单的查看本进程的内存使用情况。也许进程占用的总内存比较多,但我们在这里可以看到真正用到的并没有多少,很多都是"Free"。内存使用的堆积大多在老年代,内存池露始于此,所以要格外关心“tenured generation”。

-heap:format=b:产生一个HeapDump文件,此为生成heapdump文件的重要参数。
例:jmap -heap:format=b 2657
会产生一个heap.bin的heapdump文件。
需要注意的是,此生成heapdump的参数为JDK1.5,在1.6中的格式为:
jmap -dump:live,format=b,file=xxx 2657
这里更加强大一些,可以指定是存活的对象,还有生成heapdump的文件名。

-histo:这里会生成一个类的统计报表,此表简单无比,如显示什么类有多少个实例,共占了多少字节等,如下:
Size    Count   Class description
-------------------------------------------------------
8394352 105     long[]
8293192 57202   char[]
7834776 14157   byte[]
6713592 53743   * ConstMethodKlass
4194320 1       com.xjawa.cms5server.Kontent[]
4055072 12319   int[]
3291104 85082   * SymbolKlass
3016040 53743   * MethodKlass
2774936 4253    * ConstantPoolKlass
1871480 4253    * InstanceKlassKlass
1811808 3990    * ConstantPoolCacheKlass
1488672 62028   java.lang.String
1203280 13258   java.lang.Object[]

-permstat:打印一些持久代上的内存使用状态,有“活”的,有“死”的。

-h  或者   -help:查看jmap所有可用命令及作用。

jmap查看内存使用情况与生成heapdump的更多相关文章

  1. jmap查看内存使用情况与生成heapdump--转

    http://www.webspherechina.net/home/space.php?uid=191&do=blog&id=7572 如果想分析自己的JAVA Applicatio ...

  2. jstack(查看线程)、jmap(查看内存)和jstat(性能分析)

    公司内部同事分享的一篇文章 周末看到一个用jstack查看死锁的例子.昨天晚上总结了一下jstack(查看线程).jmap(查看内存)和jstat(性能分析)命令.供大家参考 1.Jstack 1.1 ...

  3. jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令

    jstack(查看线程).jmap(查看内存)和jstat(性能分析)命令   公司内部同事分享的一篇文章 周末看到一个用jstack查看死锁的例子.昨天晚上总结了一下jstack(查看线程).jma ...

  4. 命令:jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令

    命令:jstack(查看线程).jmap(查看内存)和jstat(性能分析)命令 这些命令 必须 在 linux jdk bin 路径 下执行 eq: ./jstack 10303 即可  如果想把 ...

  5. free命令查看内存使用情况(转载)

    linux free命令查看内存使用情况 时间:2016-01-05 06:47:22来源:网络 导读:linux free命令查看内存使用情况,free命令输出结果的各选项的含义,以及free结果中 ...

  6. Linux下查看内存使用情况方法总结

    Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...

  7. 【查看内存】Linux查看内存使用情况(二)

    Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...

  8. Linux 下查看内存使用情况方法总结

    Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...

  9. LINUX查看内存使用情况 free

    # free 显示结果如下: Mem:表示物理内存统计 total 内存总数 8057964KB used 已使用的内存 7852484KB free 空闲的内存数 205480KB shared 当 ...

随机推荐

  1. STM32的JTAG下载模式

    SWJ:串行线JTAG配置 (Serial wire JTAG configuration)  SWJ(串行线JTAG)支持JTAG或SWD访问Cortex的调试端口. 系统复位后的默认状态是启用SW ...

  2. Ubuntu 13.10 安装软件失败后出现的问题——已安装 post-installation 脚本 返回了错误号 1

    安装Oracle-java7-installer失败后,再次重新安装后出现错误-- dpkg: error processing oracle-java7-installer (--configure ...

  3. CommonView for wifi抓包破解WPA无线网络

    运行环境:win8 64位+intel 5100n网卡 步骤1:下载CommonView完全破解版,非破解版只有跑10分钟 http://www.nlver.cn/soft/7305.html 步骤2 ...

  4. 频分复用(Frequency Division Multiplexer)

    作者:桂. 时间:2017年12月19日20:43:04 链接:http://www.cnblogs.com/xingshansi/p/8067839.html 前言 主要记录基本的频分复用原理,以及 ...

  5. Zookeeper服务器配置项详解

    文章转自: http://www.bug315.com/article/159.htm http://www.bug315.com/article/160.htm Zookeeper是通过一个***. ...

  6. 手把手教你使用“谷歌云消息服务(GCM)"

    原文: http://android.eoe.cn/topic/summary GCM结构概述-GCM Architectural Overview 快速预览* 一个状态通知允许应用程序通知用户一个事 ...

  7. ios使用kvc机制简化对json的解析

    在 ios开发中,我们经常需要对服务器的传回来的json进行解析,特别是对哪些字段特别多的就会又烦躁的情绪.tmd都是一样的东西,要为每个property赋值,真是累人啊.举个简单的例子吧.服务器会过 ...

  8. Modelsim se仿真Xilinx IPcore

    Modelsim se仿真Xilinx IPcore 方法:先写好do文件常规框架,根据modelsim报错再添加ise IP核库仿真文件.注:记得添加并仿真glbl.v全局控制仿真文件到sim/is ...

  9. [svc]高并发场景 LVS DR +KeepAlive高可用实现及ka的persistence_timeout参数

    LVS-DR+keepalived模式是一种非常经典的常用生产组合 高可用场景及LVS架构 一般都用一(负载)拖多(Server Array)方式 使用LVS架设的服务器集群系统有三个部分组成: (1 ...

  10. 2-2-求并集A=A∪B-线性表-第2章-《数据结构》课本源码-严蔚敏吴伟民版

    课本源码部分 第2章  线性表 - 求并集A=A∪B ——<数据结构>-严蔚敏.吴伟民版        ★有疑问先阅读★ 源码使用说明  链接☛☛☛ <数据结构-C语言版>(严 ...