博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用jvisualvm和飞行记录器分析Java程序cpu占用率过高
阅读量:5248 次
发布时间:2019-06-14

本文共 1190 字,大约阅读时间需要 3 分钟。

一、jvisualvm使用

     JDK1.6中Oracle提供了一个新的JVM监控工具:jvisualvm。下面重点介绍如何在本地通过远程的方式打开Linux服务器上的jvisualvm.

     1、Xmanager安装

     由于jvisualvm为可视化监控工具,在本地远程服务器时,为了保证能够打开jvisualvm首先必须在本地安装Xmanager;

     2、启动jvisualvm

          进入Linux JDK Bin目录下,然后分别运行如下命令启动jvisualvm:

          (1)export DISPLAY=本地IP:0

          (2)./jvisualvm &

      jvisualvm启动后如下图所示:

    

二、飞行记录器的使用

       为了分析和定位一个Java线上系统问题,我们需要查看JVM启动时的一些参数设置,例如:垃圾回收算法、堆大小等等。这些参数可能在启动脚本中明确指明,也可能采用默认值。在系统运行过程中其他人也许动态调整了系统参数。 如何实时查看正在运行的JVM的参数呢?此时我们可以使用jcmd.

       jcmd是从JDK 7开始引入的一个JVM诊断命令行工具,可以向运行中的JVM发送诊断命令。因此要求JDK版本不得低于jdk1.8.0,也可以检查本地jdk安装目录下是否有jmc.exe文件(本地打开jfr工具),如下所示:

      在保证了JDK版本的前提下,欲使Linux上下载下来的jfr文件能在本地运行,还需要在搭有Linux环境的服务器JVM中添加如下参数:

 -XX:+UnlockCommercialFeatures -XX:+FlightRecorder ,配置完成后如下所示:

 JAVA_OPTS="$JAVA_OPTS -d64 -XX:NewRatio=3 -Xms16g -Xmx128g -XX:PermSize=128M -XX:+UnlockCommercialFeatures -XX:+FlightRecorder"

     然后在Linux环境上运行如下命令生成jfr文件:

  jcmd pid JFR.start delay=1s duration=60s name=serverRecording filename=recording_`date +%Y%m%d%H%M%S`.jfr settings=profile

     待文件生成成功后,下载相应的jfr双击即可查看相关信息。(代码->热点方法->堆栈跟踪)

     使用到的其它命令如下:

      jcmd                           ----查看JVM进程的PID

      jcmd -l                       
      jcmd pid Thread.print   ----打印堆栈信息,功能类似于jstack -m pid

     飞行记录器的示例如下:

  

三、Xmanager配置访问Linux图形化界面

  

 

转载于:https://www.cnblogs.com/moonandstar08/p/4902972.html

你可能感兴趣的文章
Python3多线程爬取meizitu的图片
查看>>
树状数组及其他特别简单的扩展
查看>>
zookeeper适用场景:分布式锁实现
查看>>
110104_LC-Display(液晶显示屏)
查看>>
httpd_Vhosts文件的配置
查看>>
php学习笔记
查看>>
普通求素数和线性筛素数
查看>>
PHP截取中英文混合字符
查看>>
【洛谷P1816 忠诚】线段树
查看>>
电子眼抓拍大解密
查看>>
poj 1331 Multiply
查看>>
tomcat7的数据库连接池tomcatjdbc的25个优势
查看>>
Html 小插件5 百度搜索代码2
查看>>
P1107 最大整数
查看>>
多进程与多线程的区别
查看>>
Ubuntu(虚拟机)下安装Qt5.5.1
查看>>
java.io.IOException: read failed, socket might closed or timeout, read ret: -1
查看>>
java 常用命令
查看>>
CodeForces Round #545 Div.2
查看>>
卷积中的参数
查看>>