JVM探秘:VisualVM监控远程Java进程

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版本对应,具体可查看插件中心文档

原文地址:https://www.cnblogs.com/cellei/p/12304943.html

时间: 2024-09-29 03:38:48

JVM探秘:VisualVM监控远程Java进程的相关文章

VisualVM连接远程Java进程

jstatd是一个RMI(Remove Method Invocation)的server应用,用于监控jvm的创建和结束,并且提供接口让监控工具(如VisualVM)可以远程连接到本机的jvms .注意是jvms,就是说运行jstatd命令后可以用监控工具监控本用户(运行jstatd命令的用户)所有已经启动的java程序. jstatd的安装.启动.连接 JDK中默认就带 jstatd,如下图,Mac 下 JDK 默认安装在 /Library/Java/JavaVirtualMachines/

使用Java visualVM监控远程JVM

1 监控远程tomcat 对于被监控的tomcat,需要修改tomcat的bin目录下的Catalina.sh配置文件,增加如下配置. JAVA_ OPTS="$JAVA_ OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=f

转:visualvm监控远程机器上的Java程序

转自:http://hanwangkun.iteye.com/blog/1195526 JDK里面本身就带了很多的监控工具,如JConsole等.我们今天要讲的这款工具visualvm,就是其中的一款.但是这款工具是在JDK1.6.07及以上才有的.它能够对JAVA程序的JVM堆.线程.类加载情况.JVM GC情况进行监控,是一个很好的免费的监控工具. 监控范围:JDK1.4及以上版本的程序都能够监控. 它在JDK里面叫做: jvisualvm,当然我们可以到它的官方网站上去下载它的最新版本,当

visualvm 监控 远程 机器上的 Java 程序

JDK里面本身就带了很多的监控工具,如JConsole等. 我们今天要讲的这款工具visualvm,就是其中的一款.但是这款工具是在JDK1.6.07及以上才有的.它能够对JAVA程序的JVM堆.线程.类加载情况.JVM GC情况进行监控,是一个很好的免费的监控工具. 监控范围:JDK1.4及以上版本的程序都能够监控. 它在JDK里面叫做: jvisualvm,当然我们可以到它的官方网站上去下载它的最新版本,当前最新版本是: 1.3.2,如下所示: 在图中已经列出了它的官方网站地址: http:

利用JMX统计远程JAVA进程的CPU和Memory

从JAVA 5开始,JDK提供了一些JVM检测的API,这就是有名的java.lang.management 包,包里提供了许多MXBean的接口类,可以很方便的获取到JVM的内存.GC.线程.锁.class.甚至操作系统层面的各种信息,本文就简单的介绍 一种利用JMX对JAVA进程进行CPU.堆内存使用的监控.可能有人会觉得没必要这样做,因为用jconsole之类的工具都能做到,而且会比本文的例 子更详细.但是有些时候将console不一定能监控到作为系统服务的java进程,我最近就不得不自己

使用Java VisualVM监控远程JVM cpu jps

我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualVM就是不错的监控工具.这个工具就在JAVA_HOME\bin\目录下的jvisualvm.exe, 双击这个文件就能看到一个比较直观的界面 从左边Applications树中可以知道,不光可以监控本地JVM运行情况, 还可以监控远程机器上的JVM运行情况.本地监控:只要打开某个JAVA程序就会自动的

使用VisualVM监控远程服务器JVM

VisualVM是JDK自带的一款全能型性能监控和故障分析工具,包括对CPU使用.JVM堆内存消耗.线程.类加载的实时监控,内存dump文件分析,垃圾回收运行情况的可视化分析等,对故障排查和性能调优很有帮助.在windows中安装JDK后,VisualVM位于%JAVA_HOME%/bin/下,直接执行jvisualvm.exe即可,一个主要运行界面如图: VisualVM会自动检测本机运行中的JVM并建立连接,本文主要介绍连接远程Linux服务器的配置方法,测试环境为CentOS 6.5,JD

使用jdk自带的visualVM监控远程监控was

1.登录was控制台https://172.16.87.221:9043/ibm/console/unsecureLogon.jsp 服务器--服务器类型--Java 和进程管理---进程定义---Java 虚拟机 通用JVM参数:-Djavax.management.builder.initial= -Dcom.sun.management.jmxremote 2.修改/opt/IBM/WebSphere/AppServer/java/jre/lib/management/management

visualvm监控远程机器上的Java程序

源文:http://hanwangkun.iteye.com/blog/1195526