如何通过shell命令行执行jmx中Mbean方法System.gc()?
可以按如下步骤实施:
<1/6>配置jvm参数,两个目标:其一是开启jmx,其二是启用显式执行GC命令-XX:-DisableExplicitGC
-XX:-DisableExplicitGC -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10240 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.3.168
注意:
1> jvm参数配置时,需要指定port和host,尤其是跨网络访问时;
2> jmx启动后,会listen两个port,一个是jvm参数指定的,另一个是随机端口号,如果跨网络访问,注意两个port都需要在防火墙上开启;
3> 访问jmx的完整uri类似:【service:jmx:rmi:///jndi/rmi:192.168.3.168:10240】/jmxrmi,一般客户端都是将协议固化下来,仅需要ip和port即可;
4> 通过jndi方式访问,uri类似:【jndi:rmi://192.168.3.168:10098/jmxrmi】
<2/6>启动目标Java进程,检查jmx是否Listen就绪;
# netstat -tnulp|grep 3058
tcp6 0 0 :::40188 :::* LISTEN 3058/java
tcp6 0 0 :::10240 :::* LISTEN 3058/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 3058/java
tcp6 0 0 :::8080 :::* LISTEN 3058/java
tcp6 0 0 :::34035 :::* LISTEN 3058/java
<3/6> 获取cmdline-jmxclient-0.10.3.jar资源,其中仅一个Client java类,通过jmx获取Mbean信息;
<4/6> 通过cmdline-jmxclient获取MBean成功的例子,如下:
# java -jar cmdline-jmxclient-0.10.3.jar - 192.168.3.168:10240 java.lang:type=Memory
Attributes:
ObjectPendingFinalizationCount: ObjectPendingFinalizationCount (type=int)
HeapMemoryUsage: HeapMemoryUsage (type=javax.management.openmbean.CompositeData)
NonHeapMemoryUsage: NonHeapMemoryUsage (type=javax.management.openmbean.CompositeData)
Verbose: Verbose (type=boolean)
ObjectName: ObjectName (type=javax.management.ObjectName)
Operations:
gc: gc
Parameters 0, return type=void
<5/6> 通过命令行执行jmx中的MBean方法,System.gc()
java -jar cmdline-jmxclient-0.10.3.jar - 192.168.3.168:10240 java.lang:type=Memory gc
注意:此处jmx认证未开启,没有username和password,用【-】代替;
<6/6> 通过jdk命令jstat监控gc执行情况,发现FGC次数在增加,gccause是System.gc(),说明通过命令行jmx调用System.gc()执行成功
# jstat -gccause 3514 3000 10
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC GCC
0.00 0.00 5.54 6.20 96.48 89.04 1 0.023 2 0.057 0.080 System.gc() No GC
0.00 0.00 5.54 6.20 96.48 89.04 1 0.023 2 0.057 0.080 System.gc() No GC
0.00 0.00 5.50 6.21 96.65 89.04 1 0.023 3 0.082 0.105 System.gc() No GC
0.00 0.00 1.50 6.21 96.75 89.09 1 0.023 4 0.109 0.132 System.gc() No GC
0.00 0.00 5.50 6.21 96.75 89.09 1 0.023 4 0.109 0.132 System.gc() No GC
0.00 0.00 6.47 6.21 96.90 89.09 1 0.023 5 0.131 0.154 System.gc() No GC
【小结】
1> 通过命令行执行jmx中注册MBean的其他方法,也可用此方式,实际应用场景,比如:方便监控并及时干预目标Java应用;
2> 执行System.gc()方法,可以释放Java进程中某些线程访问本地内存,比如DMA,Netty-NIO等产生的内存占用;
【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:
分享到:
相关推荐
java
jmxri.jar..................
mvn仓库里面找不到jmxtools-1.2.1.jar,jmxri-1.2.1.jar的包了,备个份,解压密码123
Description Resource Path Location Type Missing artifact com.sun.jmx:jmxri:jar:1.2.1 pom.xml /eshop-storm line 2 Maven Dependency Problem
Java分布式应用学习笔记09JMX-MBean的介绍
当你想深入学习jvm的时候,肯定会用到。用于使用jvisualvm.exe远程监控服务器jvm
jmx 实例 rmi mbean,采用rmi方式进行jmx的mbean管理,通过这个实例能够了解jmx的应用
标签:agent-jmx-3.0.1-javadoc.jar,agent,jmx,3.0.1,javadoc,jar包下载,依赖包
标签:agent-jmx-2.1.6.jar.zip,agent,jmx,2.1.6,jar.zip包下载,依赖包
标签:agent-jmx-2.2.1.jar.zip,agent,jmx,2.2.1,jar.zip包下载,依赖包
Openfire源码 缺失的jar包- jetty-jmx-8.0.0.M2.jar 。还有其他jar包请查看
jmx-exporter-tomcat.yml
loadrunner 监视 weblogic(JMX) 操作详细步骤.txt
标签:apollo-jmx-1.7-sources.jar,apollo,jmx,1.7,sources,jar包下载,依赖包
jmx入门[参照].pdf
标签:agent-jmx-3.0.0-sources.jar,agent,jmx,3.0.0,sources,jar包下载,依赖包
tomcat-catalina-jmx-remote-9.0.5 tomcat-catalina-jmx-remote-9.0.5.jar
NULL 博文链接:https://jasonhan-sh-hotmail-com.iteye.com/blog/1171904
tomcat-catalina-jmx-remote-8.0.21.jar架包,用于jconsole使用时tomcat无法启动报错
catalina-jmx-remote.jar,jmxcmd.jar,cmdline-jmxclient-0.10.3.jar这三个jar包打包合集。因为下载网站已经被墙,所以下载下来放在这里供有需要的同学使用