jmap查看内存使用情况与生成heapdump
来源:互联网 发布:jsp企业门户网站源码 编辑:程序博客网 时间:2024/05/29 07:41
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--转
- jmap查看内存使用情况与生成heapdump--转
- jmap查看内存使用情况与生成heapdump
- Jmap命令查看内存使用情况
- Windows中使用jmap命令查看占用内存的情况
- Linux jmap查看Java程序堆内存的使用情况
- 使用jdk自带工具生成heapdump文件以及分析内存中的变量情况
- jmap 查看内存使用直方图
- jmap 查看内存使用直方图
- Linux查看CPU与内存使用情况
- 使用WAS生成heapdump
- 查看内存使用情况
- 内存使用情况查看
- 查看内存使用情况
- JAVACORE与HEAPDUMP生成大法
- 查看TOMCAT内存使用情况
- 查看TOMCAT内存使用情况
- 查看JVM内存使用情况
- FLASH和EEPROM的最大区别
- 用不可逆算法MD5进行加密后,如何进行登录验证
- HDFS日志json转存成parquet方案
- yum源的配置,共享和第三方软件库的搭建
- [PHP] 对象的浅复制与深复制-----“=” 与 “clone”
- jmap查看内存使用情况与生成heapdump
- 集合结构图
- openfire插件最佳实践(四)离线消息推送ios服务器
- iOS swift HTTPS 9813错误解决记录
- Codeforces 626F Group Projects 动态规划
- [bzoj1626][Usaco2007 Dec][最小生成树]修建道路
- java 字符流 读写
- 过滤器一般常用的功能
- RSA加密算法Java代码示例