zoukankan      html  css  js  c++  java
  • JVM调优—性能分析神器-JProfiler详解

    一.JProfiler是什么

    JProfiler是由ej-technologies GmbH公司开发的一款性能瓶颈分析工具(该公司还开发部署工具)。
    其特点:

      • 使用方便
      • 界面操作友好
      • 对被分析的应用影响小
      • CPU,Thread,Memory分析功能尤其强大
      • 支持对jdbc,noSql, jsp, servlet, socket等进行分析
      • 支持多种模式(离线,在线)的分析

    二.数据采集

    Q1. JProfiler既然是一款性能瓶颈分析工具,这些分析的相关数据来自于哪里?
    Q2. JProfiler是怎么将这些数据收集并展现的?

     (图2)

    A1. 分析的数据主要来自于下面俩部分
    1. 一部分来自于jvm的分析接口**JVMTI**(JVM Tool Interface) , JDK必须>=1.6

    JVMTI is an event-based system. The profiling agent library can register handler functions for different events. It can then enable or disable selected events

    例如: 对象的生命周期,thread的生命周期等信息
    2. 一部分来自于instruments classes(可理解为class的重写,增加JProfiler相关统计功能)
    例如:方法执行时间,次数,方法栈等信息

    A2. 数据收集的原理如图2
    1. 用户在JProfiler GUI中下达监控的指令(一般就是点击某个按钮)
    2. JProfiler GUI JVM 通过socket(默认端口8849),发送指令给被分析的jvm中的JProfile Agent。
    3. JProfiler Agent(如果不清楚Agent请看文章第三部分"启动模式") 收到指令后,将该指令转换成相关需要监听的事件或者指令,来注册到JVMTI上或者直接让JVMTI去执行某功能(例如dump jvm内存)
    4. JVMTI 根据注册的事件,来收集当前jvm的相关信息。 例如: 线程的生命周期; jvm的生命周期;classes的生命周期;对象实例的生命周期;堆内存的实时信息等等
    5. JProfiler Agent将采集好的信息保存到**内存**中,按照一定规则统计好(如果发送所有数据JProfiler GUI,会对被分析的应用网络产生比较大的影响)
    6. 返回给JProfiler GUI Socket.
    7. JProfiler GUI Socket 将收到的信息返回 JProfiler GUI Render
    8. JProfiler GUI Render 渲染成最终的展示效果

    三. 数据采集方式和启动模式

    引用

    JVM启动参数大全

    L-Larry_Lau@163.com#36573-fdkscp15axjj6#25257
    L-Larry_Lau@163.com#5481-ucjn4a16rvd98#6038
    L-Larry_Lau@163.com#99016-hli5ay1ylizjj#27215
    L-Larry_Lau@163.com#40775-3wle0g1uin5c1#0674
    L-Larry_Lau@163.com#7009-14frku31ynzpfr#20176
    L-Larry_Lau@163.com#49604-1jfe58we9gyb6#5814
    L-Larry_Lau@163.com#25531-1qcev4yintqkj#23927
    L-Larry_Lau@163.com#96496-1qsu1lb1jz7g8w#23479
    L-Larry_Lau@163.com#20948-11amlvg181cw0p#171159

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利
  • 相关阅读:
    WinJS Clipboard
    -ms-grid -ms-grid-rows -ms-grid-row -ms-grid-columns -ms-grid-column
    严格模式 (JavaScript)
    windows rt 扫描二维码
    winmd文件和dll文件的区别
    Windows store 验证你的 URL http:// 和 https:// ms-appx:/// ms-appdata:///local
    使用C#在Windows应用商店程序中获取CPU信息
    python面向对象基础-01
    python红蓝英雄大乱斗(面向对象实现)
    python购物车升级版
  • 原文地址:https://www.cnblogs.com/hhddd-1024/p/14515406.html
Copyright © 2011-2022 走看看