使用JDK自带的visualvm进行性能监测和调优

 
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 
 

使用JDK自带的visualvm进行性能监测和调优的更多相关文章

  1. 使用JDK自带的VisualVM进行Java程序的性能分析

    VisualVM是什么? VisualVM是JDK自带的一个用于Java程序性能分析的工具,JDK安装完毕后就有啦,在JDK安装目录的bin文件夹下能找到名称为jvisualvm.exe. 要使用Vi ...

  2. Java虚拟机性能监控与调优实战

    From:  https://c.m.163.com/news/a/D7B0C6Q40511PFUO.html?spss=newsapp&fromhistory=1 Java虚拟机性能监控与调 ...

  3. <JVM下篇:性能监控与调优篇>03-JVM监控及诊断工具-GUI篇

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  4. <JVM下篇:性能监控与调优篇>01-概述篇-02-JVM监控及诊断工具-命令行篇

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  5. Java生产环境下性能监控与调优详解视频教程 百度云 网盘

    集数合计:9章Java视频教程详情描述:A0193<Java生产环境下性能监控与调优详解视频教程>软件开发只是第一步,上线后的性能监控与调优才是更为重要的一步本课程将为你讲解如何在生产环境 ...

  6. x86服务器中网络性能分析与调优 转

    x86服务器中网络性能分析与调优 2017-04-05 巨枫 英特尔精英汇 [OpenStack 易经]是 EasyStack 官微在2017年新推出的技术品牌,将原创技术干货分享给您,本期我们讨论 ...

  7. JAVA性能监控与调优参考文档链接

    JAVA性能监控与调优参考文档链接 jdk8工具集 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.htmlTroub ...

  8. Java生产环境下性能监控与调优详解

    1:JVM字节码指令与 javapjavap <options> <classes>cd monitor_tuning/target/classes/org/alanhou/m ...

  9. 软件性能测试分析与调优实践之路-Web中间件的性能分析与调优总结

    本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书<软件性能测试分析与调优实践之路>部分章节归纳. 在国内互联网公司中,Web中间件用的最多的就是Apache和Nginx这两款 ...

随机推荐

  1. JavaScript获取当前根目录

    JavaScript获取当前根目录 主要用到Location 对象,包含有关当前 URL 的信息,是 Window 对象的一个部分,可通过 window.location 属性来访问. 方法一 (wi ...

  2. 如何实现Outlook 2010 下载邮件后自动删除服务器上的邮件

    outlook2010---文件---信息---账户设置---选中要设置的帐号---双击点选要设置的邮箱---其他设置---高级---在服务器上保留邮件的副本---14天后删除服务器上的邮件副本,修改 ...

  3. linux 操作mysql

    MySQL删除数据库时的错误 ERROR 1010 (HY000): Error dropping database (can't rmdir './myapp', errno: 39)的错误信息. ...

  4. WINDOWS系统Eclipse+NDK+Android + OpenCv

    WINDOWS系统Eclipse+NDK+Android + OpenCv 参考文档博客 1 NDK环境搭建 http://jingyan.baidu.com/article/5d6edee22d90 ...

  5. 湖南省第十二届大学生计算机程序设计竞赛 A 2016

    1803: 2016 Description  给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量:   1. 1≤a≤n,1≤b≤m; 2. a×b 是 2016 的倍数. In ...

  6. 德飞莱STM32单片机学习(一)——下载环境搭建

    一.下载驱动安装. 1.手动打开CH341 文件夹(驱动程序文件夹内) ,双击安装驱动 2. 尼莫M3S 开发硬件设置 硬件需要做到以下2 点:1. USB插入USB1(COM),打开电源开关J14( ...

  7. 【JS】两种计时器/定时器

    1.首先介绍定时器 定时器:设置一个定时器,再设置一个等待的时间,到达指定时间后,执行对应的操作 两种定时器:用法一样,区别一个执行后不会停下来,一个只执行一次 第一种:window.setInter ...

  8. Liferay 6.2 改造系列之十:修改系统登录相关配置

    1.关闭自动登录功能: 在/portal-master/portal-impl/src/portal.properties文件中,有如下配置: # # Set this to true to allo ...

  9. Android 编程下 ListView 的 HeaderView 和 FooterView 不可选择点击

    在 ListView 里,HeaderView 和 FooterView 也占一行,与其他的 item 一样,可以点击,有索引,HeaderView 的索引为0.如果要使这两项不可点击,可以使用下面的 ...

  10. DSP using MATLAB 示例 Example3.13

    上代码: w = [0:1:500]*pi/500; % freqency between 0 and +pi, [0,pi] axis divided into 501 points. H = ex ...