VisualVM在Java 8中是JDK自带的一个图形化工具,项目主页 VisualVM,在后续版本中可能会从JDK移除。

VisualVM可以监控Java进程的CPU与内存占用情况,可以监控Java进程内的各个线程的执行情况,还可以与MAT工具一样用来分析堆转储快照。

监控远程Tomcat进程

监控远程主机上的Tomcat进程,需要在Tomcat的catalina.sh文件中加入参数:

JAVA_OPTS="$JAVA_OPTS -Dcom.sum.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPV4Stack=true -Djava.rmi.server.hostname=x.x.x.x"

  • -Dcom.sum.management.jmxremote: 启用JMX远程连接
  • -Dcom.sun.management.jmxremote.port=9004: 设置JMX连接端口
  • -Dcom.sun.management.jmxremote.authenticate: 是否开启用户名密码认证
  • -Dcom.sun.management.jmxremote.ssl: 是否使用SSL连接
  • -Djava.net.preferIPV4Stack: 优先使用IPV4
  • -Djava.rmi.server.hostname: 设置JMX主机IP

打开VisualVM,文件 -> 添加JMX连接,输入刚才设置的IP和端口号:

监控远程执行的jar包

监控远程主机上使用java -jar启动的Java进程,需要在执行的java -jar命令中加入以上参数:

nohup java -Dcom.sum.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.net.preferIPV4Stack=true -Djava.rmi.server.hostname=x.x.x.x -jar Demo-0.0.1-SNAPSHOT.jar &

VisualVM使用介绍

VisualVM的使用非常简单,对各个面板做个简单介绍。

  • 概述面板:查看PID号,Java版本及目录,系统环境变量,以及使用的JVM参数信息。
  • 监控面板:查看Java进程的运行时间,查看CPU、内存的使用情况,查看类的装载数,以及活动的线程数,可以手动执行GC以及堆Dump操作。
  • 线程面板:查看Java进程内所有线程的执行状态及运行时间,可以进行线程Dump操作,此操作输出信息与jstack类似,输出线程状态及跟踪堆栈。
  • 抽样器面板:可以对CPU和内存进行抽样,对CPU抽样,可以显示出各个热点方法占用的CPU时间,也可以显示出各个线程占用的CPU时间,对内存抽样,可以显示堆内存中各个对象实例的内存占用,也可以显示各个线程分配的内存大小。

除了这几个面板之外,VisualVM还支持插件来扩展功能,常用的有Visual GC以及BTrace插件,使用插件需要在工具->插件的设置面板中配置插件中心地址,插件中心地址与JDK版本对应,具体可查看插件中心文档

最新文章

  1. Slight difference between C++ and C
  2. 【云计算】docker daemon如何提供Restful的API
  3. [vijos P1626] 爱在心中
  4. CentOS 防火墙打开和关闭端口(转载)
  5. 敏捷开发概述与路线(转自MBAlib)
  6. Bzoj 2763: [JLOI2011]飞行路线 拆点,分层图,最短路,SPFA
  7. 【搜索】【并查集】Codeforces 691D Swaps in Permutation
  8. C# 数据的序列化存取
  9. [iOS Animation]-CALayer 绘图效率
  10. zookeeper-开始
  11. Ubuntu 服务器上面--安装和配置mysql 【转】
  12. 枚举getClass、getDeclaringClass区别
  13. Spring Boot 使用Java代码创建Bean并注册到Spring中
  14. Le Chapitre IV
  15. Shell编程-09-Shell中的函数
  16. CentOS 7 - 安装Oracle JDK8
  17. 【JMeter】JMeter进行简单的数据库(mysql)压力测试
  18. hive遇到的问题以及解决办法
  19. BluePrint和ORM
  20. 20155220 2016-2017-2 《java程序设计》第四周总结

热门文章

  1. H5_0012:js事件冒泡和捕获
  2. smarty文章字符截取
  3. 微信小程序调试页面的坑
  4. 假期学习【十一】Python爬取百度词条写入csv格式 python 2020.2.10
  5. java编码解码过程
  6. K3/Cloud 执行计划任务错误排查
  7. Python之路Day09
  8. PP: Think globally, act locally: A deep neural network approach to high-dimensional time series forecasting
  9. arm9特点
  10. SCSS的基本操作