JVM监控

1 jstat命令
JVM内存不够用、内存溢出可以通过监控JVM Heap信息来分析
1.1 jstat -gcutil
FGC26次,用时871ms,平均33.5ms一次,Full GC会暂停用户响应,也就是不处理用户请求,等待full gc完成后响应用户的请求,这个等待时间过大就会影响用户体验,所以Full gc是JVM调优的重点。
如何判定Full gc多长时间一次是否合理呢?

[root@bg2 ~]# jstat -gcutil 9477
# S0:年青代中第一个survivor(幸存区)已使用的占当前容量百分比
# S1:年青代中第二个survivor(幸存区)已使用的占当前容量百分比
# E:年青代中Eden已使用的占当前容量占比
# O:old代已使用的占当前容量占比
# P:perm代已使用的占当前容量占比
# YGC:JVM启动到采用时年青代中的gc次数
# YGCT:JVM启动到采用时年青代中gc使用时间s
# FGC:JVM启动到采用时old代(全gc)gc次数
# FGCT:JVM启动到采用时old代(全gc)gc所用的时间s
# GCT:JVM启动到采用时gc用的总时间(s)
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
  0.00  15.43  69.39  60.59  97.92  94.60  59507  266.120    26    0.871  266.990

1.2 jstat -gccapacity
有些跟上面的一样,这里直接附照片

[root@bg2 ~]# jstat -gccapacity 9477
 NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC 
131072.0 131072.0 131072.0 13056.0 13056.0 104960.0   917504.0   917504.0   917504.0   917504.0      0.0 1120256.0  79876.0      0.0 1048576.0   8548.0  59537    26

1

2 jps命令
使用jps命令可以查看java的进程。jps可以列举出远程的java进程信息,需要安全授权。
在%JAVA_HOME%/bin存储的jstatd.all.policy,内容如下:

grant codebase "file:${java.home}/../lib/tools.jar" {
	permission java.security.AllPermission;
}

然后再远程机器上启动命令进行注册
jstatd -J-Djava.security.policy=jstatd.all.policy
否则会提示

[root@bg3 ~]# jps 10.128.2.185 
RMI Registry not available at 10.128.2.185:1099
Connection refused to host: 10.128.2.185; nested exception is: 
        java.net.ConnectException: Connection refused (Connection refused)

3 jmap
分析程序内存占用实际上是分析堆Heap内存,堆快照使用jmap获取,典型获取方式,heap.hprof 采用Jvisualvm来查看,这个JDK自带。

jmap -dump:format=b,file:\tmp\heap.hprof [pid]

1
4 jvisualvm

在Linux系统中,可以通过以下方法对JVM进行监控: 1. jstat命令:jstat是JDK自带的一个命令,用于监控JVM的各种统计信息,如内存、垃圾回收、类加载等。可以使用以下命令查看JVM的统计信息: ``` jstat -<option> <pid> <interval> <count> ``` 其中,`<option>`是统计选项,如gc、class、compiler等;`<pid>`是Java进程的进程ID;`<interval>`是采样间隔时间;`<count>`是采样次数。 2. jps命令:jps命令也是JDK自带的一个命令,用于列出当前系统中正在运行的Java进程的进程ID。可以使用以下命令来查看Java进程的进程ID: ``` jps -l ``` 3. VisualVM:VisualVM是一个功能强大的Java监控和性能分析工具,它可以提供实时的JVM监控、线程分析、内存分析、垃圾回收等功能。可以通过下载VisualVM并安装在本地,然后连接到运行中的Java进程进行监控和分析。 4. JConsole:JConsole是JDK自带的一个图形化工具,用于监控和管理JVM。可以通过以下命令启动JConsole: ``` jconsole ``` 然后选择要监控的Java进程进行连接。 5. 远程调试:可以通过在JVM启动参数中添加远程调试参数,如`-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<port>`来启用远程调试功能。然后使用远程调试工具,如Eclipse、IntelliJ IDEA等,连接到Java进程进行实时监控和调试。 这些方法提供了多种途径来对JVM进行监控和分析,可以根据实际需求选择适合的方法进行使用。监控JVM的统计信息和性能指标可以帮助我们了解应用程序的运行状态,及时发现和解决潜在的性能问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warrah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值