http://www.webspherechina.net/home/space.php?uid=191&do=blog&id=7572

如果想分析自己的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:
   capacity = 458752 (0.4375MB)
   used     = 14208 (0.0135498046875MB)
   free     = 444544 (0.4239501953125MB)
   3.0970982142857144% used
To Space:
   capacity = 458752 (0.4375MB)
   used     = 0 (0.0MB)
   free     = 458752 (0.4375MB)
   0.0% used
tenured generation:
   capacity = 59342848 (56.59375MB)
   used     = 36321192 (34.638587951660156MB)
   free     = 23021656 (21.955162048339844MB)
   61.20567721994064% 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  
打印一些持久代上的内存使用状态,有“活”的,有“死”的。本人用之不多。

最新文章

  1. 题目:求1+2+…+n,
  2. Nginx-Lua模块的执行顺序
  3. java 生成和解析二维码
  4. 20160303 - 升级 Windows 10 版本 1511 后,文件夹默认打开方式为 cmd 的修复
  5. IE的浏览器模式和文档模式
  6. js如何获取object类型里的键值
  7. boost::string or boost::regex
  8. SongTaste音乐下载器
  9. 浅谈linux读写同步机制RCU
  10. css div11
  11. 关于C#委托的一些学习笔记
  12. GeoJson
  13. composer.json
  14. 分布式系统里session同步
  15. Shell基础 - Bash基础功能
  16. 02 while循环,密码登录
  17. 二叉搜索树(BST)
  18. 获取多达 16GB 的 Dropbox 免费空间!
  19. 如何在Linux中发现IP地址冲突
  20. Gitea docker-compose.yaml

热门文章

  1. 【转】不用软件,解压Win8/Win8.1的install.wim文件
  2. Visual Studio for mac从入门到放弃1
  3. c# 生成二维码图片
  4. 遇到问题-----cas4.2.x登录成功后报错No principal was found---cas中文乱码问题完美解决
  5. P5277 【模板】多项式开根(加强版)(bsgs or Cipolla)
  6. Activity启动流程
  7. Jetty实战之 嵌入式Jetty运行web app
  8. 用css做出来一个三角形
  9. SpringBoot整合MyBatis及Thymeleaf
  10. Python中 '==' 与'is' 以及它们背后的故事