1.关于VisualVm工具
VisualVM 提供在 Java 虚拟机 (Java Virutal Machine, JVM) 上运行的 Java 应用程序的详细信息。在 VisualVM 的图形用户界面中,您可以方便、快捷地查看多个 Java 应用程序的相关信息。
入门指南(中文版)地址:http://visualvm.java.net/zh_CN/gettingstarted.html
在进行性能监测前,先安装好相关的插件
2.监控本机的java程序
(1)启动VisualVm
在Windows系统中,VisualVm工具的路径为:JDK根目录\bin\jvisualvm.exe
(2)点击启动界面左侧的树中要进行检测的java应用程序
3.监控远程机器的java程序
(1)首先要在要监控的远程机器上启动jstatd监控进程,具体命令介绍如下:
概述
jstatd [可选参数]
参数
可选参数
命令行参数。这些参数可以是任意次序的,如果存在冗余或互斥的参数,最后一个指定选项将被优先考虑。
描述
jstatd工具是一个RMI服务程序,用来监控HotSpot Java虚拟机(JVMS)的创建和终止,并提供一个接口以允许远程的监控工具依附到本地运行的Java虚拟机上。
jstatd服务需要在本地主机上存在一个RMI注册。jstatd服务将试图在默认端口上连接RMI注册,或者在 -p 端口号 所指定的端口上。如果没有找到RMI注册,则会在jstatd应用程序中创建一个并绑定到-p 端口号 参数所指定的端口,如果未指定端口号,则绑定到默认端口。可以通过指定的-nr 参数来控制是否创建一个内部的RMI注册。
提示:在未来版本的JDK这个工具可能是不被支持的,或者不可用的。而且目前无法在Windows 98和Windows ME 平台使用。
可选参数
jstatd 命令支持以下参数:
-nr 当未找到一个存在的RMI注册时,不要尝试在jstatd进程内部创建一个内建的RMI注册。
-p 端口号 指定一个期望发现RMI注册的端口号,或者,如果没有发现,在未指定 -nr参数的情况下创建一个
-n rmi名称 指定在RMI注册中发现的远程RMI对象的名字。缺省的名字是JStatRemoteHost,如果在一个主机中启动了多个jstatd服务器,可以用该参数指定每个导出的RMI对象的名字。无论如何,唯一的服务器名称也将被包含在监控器客户端的hostid和vmid字符串中。
-J 选项 传递参数给javac调用的java启动程序,例如 -J -Xms48m将设置启动内存为48m。这是一种给VM下运行的Java应用程序传递参数的惯用手法。
安全性
jstatd服务器仅能监控它有本地访问权限的Java虚拟机。因此运行的jstatd进程和目标Java虚拟机的用户认证必须相同,某些用户认证,例如在基于UNIX系统下的root用户,有权限访问在该系统中的任何Java虚拟机。一个jstatd进程可以监控与其拥有相同用户认证的系统中的任何Java虚拟机,当时这也引入了额外的安全问题。
jstatd服务器不为远程客户端提供任何认证。因此一个jstatd服务器进程将把所有的Java虚拟机暴露给网络上拥有访问权限的用户的jstatd进程。这种暴露在你的环境中可能是令人不快的,而且在jstatd进程启动之前你也应该考虑一下你的本地安全策略,尤其是在生产环境中或者不安全的网络环境下。
如果没有别的安全管理器被安装的话,jstatd服务器将安装一个RMISecurityPolicy实例,一次需要制定一个安全策略文件。这个策略文件必须符合策略文件语法的缺省策略实现。
如下的策略文件允许jstatd服务运行而没有任何安全异常。这个策略比授权给任何代码库所有权限的自由度要小,但要比运行jstatd服务所需的最小权限的自由度大一些。
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
为了使用这个策略,拷贝上面的文本到一个名字为jstatd.all.policy的文本文件中,然后使用如下命令运行jstatd服务:
jstatd -J-Djava.security.policy=jstatd.all.policy
(2)在远程机器上启动jstatd
(3)在VisualVm中创建jstatd远程连接
(4)启动时加入jvm参数,使用jmx方式连接
无限制访问
set JAVA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9008 -Dcom.sun.management.jmxremote.authenticate=false - Dcom.sun.management.jmxremote.ssl=false
需要用户名和密码访问
JAVA_OPTS='-Xms128m -Xmx256m -XX:MaxPermSize=128m -Djava.rmi.server.hostname=192.168.1.8 -Dcom.sun.management.jmxremote.port=8088 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=/usr/java/default/jre/lib/management/jmxremote.password -Dcom.sun.management.jmxremote.access.file=/usr/java/default/jre/lib/management/jmxremote.access' (jmxremote.access 在JAVA_HOME\jre\lib\management下有模板) jmxremote.access 中显示 monitorRole readonly controlRole readwrite jmxremote.password中显示 monitorRole QED (QED为密码) controlRole R&D
4.其它事项
(1)使用远程主机监控方式,即jstatd方式时,每次启动工具时会自动检测并连接已配置的监控主机,但无法提供远程主机内存的快照和具体信息,仅可提供cpu和内存的使用监控信息
使用jmx方式连接,如果远程的java进程重启,则需要重新建立连接,因为远程的java进程ID已变化
(2)我在使用该工具时,原本Linux系统中安装的是openjdk,未能连接成功,改为oracle的HotSpot虚拟机后,可以连接
(3)具体功能图片如下(来自http://visualvm.java.net/features.html)
参考链接:
http://visualvm.java.net/zh_CN/intro.html
http://www.blogjava.net/titanaly/archive/2012/03/20/372318.html
相关推荐
使用 VisualVM 工具进行 Tomcat 性能调优和性能监控 本文主要介绍了如何使用 VisualVM 工具来进行 Tomcat 的性能调优和性能监控。下面将详细介绍相关知识点: 一、JDK 内存优化 在 Tomcat 中,默认的堆大小为 128...
在 JVM 性能监测及调优中,我们需要使用多种工具和方法来监测和优化 JVM 的性能,包括 Linux 命令行工具和 JDK 工具。这可以帮助我们精准地找到背后的原因,并且能够解决内存溢出或内存使用率过高的问题。
VisualVM作为一款全面的性能分析工具,不仅简化了性能监控的过程,而且通过丰富的数据展示和分析功能,帮助开发者深入理解应用程序的运行状况,从而进行有效的性能调优。无论是在开发阶段的性能测试,还是在生产环境...
VisualVM是一款强大的Java应用程序性能分析工具,它是JDK自带的一部分,可以用来监控和诊断Java应用程序。VisualVM提供了丰富的功能,包括内存分析、线程检查、CPU使用率监测、类加载和垃圾收集信息等,帮助开发者...
### VisualVM性能调优知识点详解 ...综上所述,VisualVM不仅是一款优秀的性能分析工具,同时也是开发者进行Java应用性能调优不可或缺的利器。通过合理利用其提供的各项功能,我们可以显著提高软件性能和稳定性。
VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU...
2. JConsole:同样是JDK自带的监控工具,提供了GUI界面来监视Java应用程序的性能和资源使用情况。 3. VisualVM:功能更加强大的Java性能分析工具,可以远程连接到Java应用进行监控。 4. YourKit Java Profiler:商业...
在使用 VisualVM 进行性能分析时,需要注意以下几点: 1. 选择合适的监视视图:根据实际情况选择合适的监视视图,例如 CPU 使用情况、内存使用情况、线程状态等。 2. understanding conversion dump:了解转储的...
本文将详细介绍如何利用JDK自带的算法实现AES加解密,并结合Base64编解码进行数据处理。 首先,AES是一种分组密码,它以128位为一个数据块进行加密,支持128、192和256位的密钥长度。在JDK中,AES加解密的核心类...
【Java、WebLogic和JDK性能调优】 Java、WebLogic和JDK的性能调优是优化企业级应用的关键步骤,以确保系统高效稳定运行。本文档主要关注WebLogic应用服务器和JDK的底层性能优化。 1. **WebLogic应用服务器性能调优...
《Sun JDK 1.6内存管理--调优篇》深入探讨了Java开发中的关键环节——JVM内存管理和性能优化。Sun JDK 1.6作为早期的Java开发环境,其内存管理机制对于理解现代JVM的工作原理至关重要。本文将详细解析JVM内存结构,...
基于JDK命令行的监控 基于JVisualVM的可视化监控 基于Btrace的监控调试 Tomcat性能监控与调优 Nginx性能监控与调优 JVM层GC调优 JVM字节码与java代码层调优
对于大型企业级应用,JVM的性能监控与调优是至关重要的,因为这直接影响到应用的响应速度、稳定性和资源利用率。本篇文章将深入探讨JVM的性能监控和调优技术。 1. **内存管理**: - **堆内存**:Java对象主要存储...
对于内存使用,建议进行内存泄漏检测和JVM内存泄漏分析,了解JVM内存结构和性能瓶颈,分析PermGen、Heap溢出等问题。而在连接线程数调整方面,需要关注与连接相关的参数,如connectionTimeout、acceptCount以及...
1. **VisualVM使用**:VisualVM是Java开发工具集的一部分,提供了一个集成的环境来监视和分析Java应用程序。它能展示CPU使用率、内存占用、线程状态、类加载情况等信息,并支持JMX插件,帮助开发者定位性能瓶颈。...
将视频整合成为思维导图...内容包括:(1)基于JDK命令后工具的监控(2)基于Btrace的监控调试(3)nginx性能监控和调优 (4)java代码层优化(5)JVM层GC调优(6)基于JVisualVM的可视化监控(7)tomcat性能监控和调优
JDK自带线程池分析 JDK 自带线程池是 Java 语言中用于管理和执行线程的工具,旨在提高多线程...通过本文的介绍,我们可以了解 JDK 自带线程池的组成、创建方法和优点,从而更好地使用线程池来开发高效的多线程程序。
模块四讲述了JVM性能监测及调优,可能包含JVM内存模型解析、垃圾收集器的选择与调优、类加载机制、JDK自带的监控工具如JConsole、VisualVM的使用等。这部分内容对于定位和解决内存泄漏、性能瓶颈等问题至关重要。 ...
2. **组件选择**:选择合适的数据结构和库可以显著提高性能,例如使用`ConcurrentHashMap`替代`synchronized`关键字可以提高多线程环境下的性能。 3. **软件设计思想**:遵循SOLID原则等最佳实践可以避免未来可能...
这个名为"monitor_tuning_Demo"的压缩包文件,很显然是为了教授如何使用JDK提供的监控工具以及进行JVM(Java虚拟机)的调优。在实际应用中,这些工具和技术对于优化Java应用性能、定位问题以及确保系统健康运行至关...