1  tomcat 的PID获得

ps -ef|grep tomcat

 [root@iZ2zeapch8kbaw4bxnz8vxZ tomcat7]# ps -ef|grep tomcat
root : pts/ :: /usr/sbin/cronolog /usr/local/tomcat7/logs/catalina.%Y-%m-%d.out
root : pts/ :: /usr/local/jdk1..0_77/bin/java -Djava.util.logging.config.file=/usr/local/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xms1024m -Xmx1024m -Xss512K -XX:+UseConcMarkSweepGC -Djdk.tls.ephemeralDHKeySize= -Djava.endorsed.dirs=/usr/local/tomcat7/endorsed -classpath /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat7 -Dcatalina.home=/usr/local/tomcat7 -Djava.io.tmpdir=/usr/local/tomcat7/temp org.apache.catalina.startup.Bootstrap start
root : pts/ :: grep tomcat

2 查看java垃圾收集器 jmap -heap pid

其中 using thread-local object allocation下面就是采用的java垃圾收集器

下图事例中为:Concurrent Mark-Sweep GC

[root@iZ2zeapchxZ tomcat7]# jmap -heap 13297
Attaching to process ID 13297, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.77-b03 using parallel threads in the new generation.
using thread-local object allocation.
Concurrent Mark-Sweep GC Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 1073741824 (1024.0MB)
NewSize = 87228416 (83.1875MB)
MaxNewSize = 87228416 (83.1875MB)
OldSize = 986513408 (940.8125MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB) Heap Usage:
New Generation (Eden + 1 Survivor Space):
capacity = 78512128 (74.875MB)
used = 17016048 (16.227767944335938MB)
free = 61496080 (58.64723205566406MB)
21.673145835507096% used
Eden Space:
capacity = 69795840 (66.5625MB)
used = 10923608 (10.417564392089844MB)
free = 58872232 (56.144935607910156MB)
15.650800964642018% used
From Space:
capacity = 8716288 (8.3125MB)
used = 6092440 (5.810203552246094MB)
free = 2623848 (2.5022964477539062MB)
69.89718559093045% used
To Space:
capacity = 8716288 (8.3125MB)
used = 0 (0.0MB)
free = 8716288 (8.3125MB)
0.0% used
concurrent mark-sweep generation:
capacity = 986513408 (940.8125MB)
used = 41311272 (39.397499084472656MB)
free = 945202136 (901.4150009155273MB)
4.187603702594583% used 19916 interned Strings occupying 2422360 bytes.

  Concurrent Mark-Sweep GC :CMS回收器

Mark Sweep Compact GC:    串行GC(Serial GC)

     Parallel GC with 2 thread(s): 并行GC(ParNew)

    如何修改GC回收器: 设置 JAVA_OPTS

3JMAP介绍

打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。

可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。使用方法 jmap -histo pid。如果连用SHELL jmap -histo pid>a.log可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。jmap -dump:format=b,file=outfile 3024可以将3024进程的内存heap输出出来到outfile文件里,再配合MAT(内存分析工具(Memory Analysis Tool),使用参见:http://blog.csdn.net/fenglibing/archive/2011/04/02/6298326.aspx)或与jhat (Java Heap Analysis Tool)一起使用,能够以图像的形式直观的展示当前内存是否有问题。

64位机上使用需要使用如下方式:

jmap -J-d64 -heap pid

2、命令格式

SYNOPSIS

jmap [ option ] pid

jmap [ option ] executable core

jmap [ option ] [server-id@]remote-hostname-or-IP

3、参数说明

1)、options:

executable Java executable from which the core dump was produced.

(可能是产生core dump的java可执行程序)

core 将被打印信息的core dump文件

remote-hostname-or-IP 远程debug服务的主机名或ip

server-id 唯一id,假如一台主机上多个远程debug服务

2)、基本参数:

-dump:[live,]format=b,file=<filename> 使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.

-finalizerinfo 打印正等候回收的对象的信息.

-heap 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况.

-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.

-permstat 打印classload和jvm heap长久层的信息. 包含每个classloader的名字,活泼性,地址,父classloader和加载的class数量. 另外,内部String的数量和占用内存数也会打印出来.

-F 强迫.在pid没有相应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效.

-h | -help 打印辅助信息

-J 传递参数给jmap启动的jvm.

pid 需要被打印配相信息的java进程id,可以用jps查问.

4、使用示例

jmap -histo 4939

[输出较多这里不贴了]

2)jmap -dump:format=b,file=test.bin 4939

Dumping heap to /home/fenglb/test.bin ...

Heap dump file created

4   jmap -histo pid|head -n 30

  

 num     #instances         #bytes  class name
----------------------------------------------
1: 117098 170232696 [B
2: 204755 121325072 [I
3: 651042 82624448 [C
4: 414175 9940200 java.lang.String
5: 141560 8732760 [Ljava.lang.Object;
6: 40748 3585824 java.lang.reflect.Method
7: 78318 2506176 java.util.HashMap$Node
8: 30303 2477016 [S
9: 21451 1962016 [Ljava.util.HashMap$Node;
10: 54391 1855488 [Ljava.lang.String;
11: 23772 1521408 java.util.regex.Matcher
12: 53136 1275264 java.util.ArrayList
13: 29266 1170640 java.util.LinkedHashMap$Entry
14: 23997 1151856 java.util.StringTokenizer
15: 34861 1115552 java.awt.Color
16: 31430 1005760 java.lang.ref.WeakReference
17: 17900 1002400 org.apache.jasper.compiler.Mark
18: 41636 999264 java.lang.StringBuilder
19: 30441 974112 java.util.concurrent.ConcurrentHashMap$Node
20: 19761 948528 java.util.HashMap
21: 8217 931240 java.lang.Class
22: 41439 892720 [Ljava.lang.Class;
23: 13799 772744 java.util.LinkedHashMap
24: 10456 752832 java.util.regex.Pattern
25: 9480 682560 org.eclipse.jdt.internal.compiler.flow.UnconditionalFlowInfo
26: 19754 632128 java.util.Stack
27: 14611 621080 [[C

  其中:

[C is a char[]
[S is a short[]
[I is a int[]
[B is a byte[]
[[I is a int[][]

最新文章

  1. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一)
  2. Hyper-V 2012 R2 故障转移群集之建立域控(AD DS)与加入域
  3. 基于MATLAB的离散小波变换
  4. NOI 题库 1792
  5. MVC(Model(模型) View(视图) Controller(控制器))
  6. C#事物执行数据
  7. Python在金融,数据分析,和人工智能中的应用
  8. python(1) - 字符串
  9. Event 元标签中的代码提示问题
  10. 低版本的 opencv库的 vs2010 打开 高版本opencv
  11. PHP获取文件扩展名的五种方式
  12. sqlite ef6
  13. 设计模式——组合模式(C++实现)
  14. word 2013 标题设置多级列表
  15. Spring 注入集合
  16. 题解-ZJOI2015地震后的幻想乡
  17. CountDownLatch &amp; CyclicBarrier
  18. 解释Spring中IOC, DI, AOP
  19. 【spoj】DIVCNTK
  20. 爬取猫眼TOP100

热门文章

  1. python爬虫之数据的三种解析方式
  2. h5小球走迷宫小游戏源码
  3. PHP 用户密码加密函数password_hash
  4. (2017)你最不建议使用的Python Web框架?
  5. ubuntu下import matplotlib错误解决办法
  6. Python中collections模块的使用
  7. How to submit a package to PyPI
  8. webpack入门指南-step02
  9. 面向对象OO第9-11次作业总结
  10. 《Java学习笔记JDK8》学习总结