java gc 命令_Java 查看系统GC命令介绍

使用 JVM的人都或多或少的了解垃圾回收机制,当系统的服务出现性能问题时,都会去服务器上查看下系统GC的情况。此外,如果有新的服务上线,也需要去服务器上查看下新服务的整体GC水平,这就可以使用jstat命令来查看了,当然你也可以使用其他方式。

jstat的命令查看系统GC情况,很简单,只需要先通过jps或者ps -aux |grep tomcat来查看对应服务所在的进程数,然后使用下面命令查看。jstat 查看 gc 使用方法如下:

jstat -gcutil `线程值` `间隔时间数(ms)`执行命令sudo jstat -gcutil 11694 3600,结果会显示内存各个区域大小的情况,如图:

3409ea3211696d71ab21cdd9b77b3f9d.pngNote: 结果里面列出每个区间的内存大小,新生代gc的次数和时间,老年代gc的次数和时间。

1. S0 — Heap上的 Survivor space 0 区已使用空间的百分比;

2. S1 — Heap上的 Survivor space 1 区已使用空间的百分比;

3. E — Heap上的 Eden space 区已使用空间的百分比;

4. O — Heap上的 Old space 区已使用空间的百分比;

5. P — Perm space 区已使用空间的百分比;

6. YGC — 从应用程序启动到采样时发生 Young GC 的次数;

7. YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒);

8. FGC — 从应用程序启动到采样时发生 Full GC 的次数;

9. FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒);

10. GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒).

当我们使用jstat命令查看GC时,发现YoungGC或者FullGC频率过高时,就需要分析服务的具体情况了。这个时候,可以使用Jmap来查看当前系统的实例使用内存大小,一般地,需要dump到本地进行分析,使用可视化工具可以使分析效率得到很大的提高。Jmap的使用方法如下所示:

jmap -dump:format=b,file=log.bin `进程id`使用sudo jmap -dump:format=b,file=log.bin -F 11694命令,写入文件内容如下:

JAVA PROFILE 1.0.1

JAVA PROFILE 1.0.1

Lcom/alibaba/dubbo/remoting/exchange/support/DefaultFuture$RemotingInvocationTimeoutScan;

DefaultStatistics.java

T8procedureNameRs

StringUtils.10

isCons

(Ljava/lang/Integer;)Ljava/math/BigDecimal;

HtheCloseBracketFor

h([Ljava/lang/String;Lorg/codehaus/jackson/JsonGenerator;Lorg/codehaus/jackson/map/SerializerProvider;Lorg/codehaus/jackson/map/JsonSerializer;)V

[email protected]

lastActiveFilter

Ampersand

......Note:有很多可视化的工具来分析dump文件,为了简单,这里使用java自带的工具jvisualvm工具,在文件选项中装入 dump 下来的 文件log.bin,就可以看到各个对象实例所占用的内存大小和实例数量了。如下图:

b6acbaead24aaf12b7f9d6d10aa583a1.png

java 中 还有一个命令比较有用,就是jstack,该命令可以查看服务器上的某个服务的堆栈信息。从而分析线程是否处于死锁状态,从而导致服务不可用或者服务性能受到影响。使用命令jstack 线程id就可以获取所有堆栈信息了,非常简单便捷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值