一、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图形化界面

使用jvisualvm和飞行记录器分析Java程序cpu占用率过高的更多相关文章

  1. 使用jstack分析java程序cpu占用率过高

    在项目中经常会碰到CPU占用率过高的问题,那么碰到这类问题应当如何处理呢?下面提供一种处理思路: 首先top -H -p <pid>以线程的模式查看java应用的运行情况,找到占用cpu或 ...

  2. java应用CPU占用率过高问题的分析

    使用top查询哪个进程占用CPU过高 查看CPU占用高的进程中,哪个线程占用CPU高 可通过以下三种方式查看: 1 top中按SHIFT+H查找哪个线程占用高 2 top -H -p PID命令查看哪 ...

  3. 线上Java程序导致服务器CPU占用率过高的问题排除过程

    博文转至:http://www.jianshu.com/p/3667157d63bb,博文更好效果看原版,转本博文的目的就算是个书签吧,需要时候可以定位原文学习 1.故障现象 客服同事反馈平台系统运行 ...

  4. 记一次线上Java程序导致服务器CPU占用率过高的问题排除过程

    博文转至:http://www.jianshu.com/p/3667157d63bb,转本博文的目的就是需要的时候以防忘记 1.故障现象 客服同事反馈平台系统运行缓慢,网页卡顿严重,多次重启系统后问题 ...

  5. Linux下java进程CPU占用率高分析方法

    Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...

  6. (转)Linux下java进程CPU占用率高-分析方法

    Linux下java进程CPU占用率高-分析方法 原文:http://itindex.net/detail/47420-linux-java-%E8%BF%9B%E7%A8%8B?utm_source ...

  7. Linux下java进程CPU占用率高分析方法(一)

    Linux下java进程CPU占用率高分析方法 在工作当中,肯定会遇到由代码所导致的高CPU耗用以及内存溢出的情况.这种情况发生时,我们怎么去找出原因并解决. 一般解决方法是通过top命令找出消耗资源 ...

  8. Java内存、CPU占用率过高

    windows下揪出java程序占用cpu很高的线程 并找到问题代码 死循环线程代码 linux下查找java进程占用CPU过高原因 Java 占用CPU使用率很高的分析 记一次线上Java程序导致服 ...

  9. Linux下分析某个进程CPU占用率高的原因

      Linux下分析某个进程CPU占用率高的原因 通过top命令找出消耗资源高的线程id,利用strace命令查看该线程所有系统调用  1.top 查到占用cpu高的进程pid 2.查看该pid的线程 ...

随机推荐

  1. 【Hadoop代码笔记】目录

    整理09年时候做的Hadoop的代码笔记. 开始. [Hadoop代码笔记]Hadoop作业提交之客户端作业提交 [Hadoop代码笔记]通过JobClient对Jobtracker的调用看详细了解H ...

  2. HDU 1890--Robotic Sort(Splay Tree)

    题意:每次找出第i大的数的位置p输出,然后将i~p之间的数反转. 题解:每次把要的区间转成一棵子树,然后更新.因为每次将第i小的数转到了了i,所以k次操作后,可知前k个数一定是最小的那k个数,所以以后 ...

  3. 74HC595 for STM32 源代码【worldsing笔记】

    74HC595是硅结构的CMOS器件, 兼容低电压TTL电路,遵守JEDEC标准. 74HC595是具有8位移位寄存器和一个存储器,三态输出功能. 移位寄存器和存储器是分别的时钟. 数据在SHcp(移 ...

  4. http 需要掌握的知识点(一)

    超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.HTTP 也属于 TCP/IP 协议族的子集,想要学习 HTTP ,先需要了解 ...

  5. Oracle- 存储过程和异常捕捉

    这段时间晚上有时候去打打球,回家看看电视剧,日子一天天过…….学了点ORACLE存储过程基础,作一下备注,以便日后需查阅. 创建无参存储过程 create procedure p_myPro1 is ...

  6. Oracle12c功能增强 新特性之管理功能的增强

    1.    数据文件在线重命名和迁移 不想先前的版本号.在Oracle12cR1中,数据文件的迁移或重命名不再要求一系列的步骤,比如:将表空间至于仅仅读模式,然后数据文件逻辑等操作.在12cR1中.数 ...

  7. hdu 5442 Favorite Donut 后缀数组

    Favorite Donut Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid ...

  8. ORM之四:调用入口与调用示例

    一.ORM入口封装 结合上一篇文章与这里的DbProvider().Init()方法,就很明显的知道了是创建一个mssql的实例.那么在DbService的泛型方法中显示提供了单表操作与多表linq查 ...

  9. 设计模式 - 策略模式(Strategy Pattern) 具体解释

    策略模式(Strategy Pattern) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26577879 本文版权全 ...

  10. iOS开发——新特性OC篇&IOS9 系统新特性

    IOS9 系统新特性 2015年6月89号凌晨召开的WWDC 2015苹果开发者大会发布了全新的iOS 9系统,PC6小编今天给大家整理了这次iOS9的系统更新带来了哪些新的功能与升级,本次新功能一览 ...