java 查看垃圾收集器_通过jmap查看jvm采用的垃圾收集器

1  tomcat 的PID获得

ps -ef|grep tomcat

1 [root@iZ2zeapch8kbaw4bxnz8vxZ tomcat7]# ps -ef|greptomcat2 root 13296 1 0 10:35 pts/1 00:00:00 /usr/sbin/cronolog /usr/local/tomcat7/logs/catalina.%Y-%m-%d.out3 root 13297 13295 87 10:35 pts/1 00:00:12 /usr/local/jdk1.8.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=2048 -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 start4 root 13434 12792 0 10:35 pts/1 00:00:00 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

3、JMAP介绍

打印出某个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= 使用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

4jmap -histopid|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[][]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值