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就可以获取所有堆栈信息了,非常简单便捷。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux中,可以使用以下命令查看Java GC(垃圾回收)情况: 1. jstat命令 jstat命令可以用来监视Java虚拟机(JVM)中的各种运行时信息,包括堆内存的使用情况、GC情况等。使用jstat命令需要指定以下参数: - -gc:表示要监视GC情况 - [interval]:表示监视的时间间隔,以毫秒为单位,默认为1000毫秒 - [count]:表示监视的次数,默认为无限次 例如,可以使用以下命令每隔5秒钟输出一次JVM的GC情况: ``` jstat -gc 5000 ``` 2. jmap命令 jmap命令可以用来生成堆内存的转储文件(Heap Dump),从而可以分析Java应用程序的内存使用情况。使用jmap命令需要指定以下参数: - -dump:表示生成堆转储文件 - [format]:表示转储文件的格式,可以是b、h、f和d等格式 - [file]:表示转储文件的输出路径和文件名 例如,可以使用以下命令生成一个二进制格式的堆转储文件: ``` jmap -dump:format=b,file=heap.bin <pid> ``` 其中,`<pid>`表示Java应用程序的进程ID。 3. jconsole命令 jconsole命令是一个图形化的监控工具,可以用来监视Java应用程序的各种运行时信息,包括内存使用情况、线程状态、GC情况等。使用jconsole命令可以更直观地了解Java应用程序的运行状态。使用jconsole命令时,需要先启动Java应用程序,并将其连接到jconsole。 以上是常用的查看Java GC情况的命令,不同的命令适用于不同的场景,可以根据实际情况选择使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值