【jvisualvm】工具使用
转载博客:https://www.cnblogs.com/kongzhongqijing/articles/3625340.html
https://www.jianshu.com/p/0f7613b88a12
https://blog.csdn.net/jlb882800/article/details/54378069
https://blog.csdn.net/kl28978113/article/details/53817827
一、介绍
官网上关于jvisualvm的用法介绍
http://docs.oracle.com/javase/6/docs/technotes/tools/share/jvisualvm.html
- 内存信息
- 线程信息
- Dump堆(本地进程)
- Dump线程(本地进程)
- 打开堆Dump。堆Dump可以用jmap来生成。
- 打开线程Dump
- 生成应用快照(包含内存信息、线程信息等等)
- 性能分析。 :idea: CPU分析(各个方法调用时间,检查哪些方法耗时多),内存分析(各类对象占用的内存,检查哪些类占用内存多)
- ……
二、配置
服务器 上的 tomcat 配置 jvm 启动参数。 在 tomcat 的 catalina.bat 中添 加如下参数: JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.0.237 -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" 上述参数未设用户名与密码登录。 客户端VisualVM配置 (我客户端用的是WinXP). a.直接反键点击Remote,选择Add Remote Host... b.在弹出的界面中输入远程机器的IP地址(192.168.0.237),这个IP地址会加入到Remote节点下. c.反键点击这个IP地址,选择Add JMX Connection, 在弹出的界面中输入刚配置的端口号(18999), 这个连接会加入到该IP节点下. d.反键点击这个连接,选择Open.
(2)在启动脚本(JVM启动参数)中设置
#!/bin/bash #用于simple部署类型 time=`date "+%Y%m%d%H%M%S"` LOGBASE=/var//logs/route if [ ! -d $LOGBASE ]; then mkdir -p $LOGBASE;fi logfile="$LOGBASE/funds-route.run.log.${time}" #DEBUG_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8411" #配置到了plus环境变量 默认dev和test开启 JAVA_OPTS=" $JVM_TEST_ARGS $DEBUG_OPTS -server -XX:PermSize=128m -XX:MaxPermSize=512m -Xmn2g -Xms5g -Xmx5g -XX:NewRatio=3 -XX:ParallelCMSThreads=8 -XX:+CMSParallelRemarkEnabled -XX:+ExplicitGCInvokesConcurrent -XX:+CMSClassUnloadingEnabled -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -XX:+UseConcMarkSweepGC -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:CMSFullGCsBeforeCompaction=0 -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80 -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -Xloggc:${LOGBASE}/route.gc.log.${time} -XX:ErrorFile=${LOGBASE}/froute.vmerr.log.${time} -XX:HeapDumpPath=${LOGBASE}/funds-route.heaperr.log.${time} -Dfile.encoding=UTF-8 -Ddruid.mysql.usePingMethod=false -Djava.rmi.server.hostname=10.24.62.175 -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false " ## exec /usr/local/java8/bin/java $JAVA_OPTS -jar /opt/soft/jetty/start.jar jetty.base=/opt/soft/jetty jetty.port=8977 >> $logfile 2>&1
连接后的效果图:

三、使用
http://zhouanya.blog.51cto.com/4944792/1370017
visualVM 插件
https://github.com/irockel/tda
visualVM还可通过扩展增加功能。启动页面时有“visualVM 扩展入门指南”,如果需要哪些插件可看下这里的介绍。
在“工具”-》“插件”-》可用插件项中列出。

除这些可用插件外,还可以增加第三方的插件扩展功能。
Third Party Plugins:
BTrace Plugin: support for creating, deploying and saving BTrace scripts directly from the VisualVM. Home »
Coherence Plugin: summarized statistics and information for a JMX enabled Coherence cluster. Home »
CRaSH Plugin: support for the CRaSH open source shell for the Java Platform in VisualVM. Home »
OSGi Plugin: basic management of OSGi platforms via JMX. Home »
TDA Plugin: Thread Dump Analyzer is a GUI for analyzing thread dumps generated by the Java VM. Home »
其他插件里:
Buffer Monitor: monitoring usage of direct buffers created by ByteBuffer.allocateDirect and mapped buffers created by FileChannel.map.
Buffer Pools和MBeans Browser可以通过GUI的方式查看DirectMemory的即时使用情况。
四、使用实例
1、插件“Visual GC"使用。
转自:http://supercharles888.blog.51cto.com/609344/1179790
安装 ”Visual GC"插件:
这个插件是jvisualvm的插件,它非常强大,可以动态的对指定的进程进行监控,并且来通过统计面板来分类显示出各项任务/事件的总时间开销:
安装方法: Tool->Plugin->Available Plugins:
(点击下一步,安装,安装完成后重启jvisualvm)

重启Visual VM 之后,就可以看到这个"Visual GC"已经被正确的显示了。
浙公网安备 33010602011771号