当前位置: 首页 > news >正文

伊牡丹江市春市网站建设网站高中建设工具

伊牡丹江市春市网站建设,网站高中建设工具,花店网站建设方案,wordpress二次元模版上周一个偶然的机会听同事提到了Java FlameGraph#xff0c;刚实验了一下#xff0c;效果非常好。 一、什么是FlameGraph 直接看图说话。FlameGraph 是 SVG格式#xff0c;矢量图#xff0c;可以随意扩大缩小#xff0c;看不清的信息可以放大看。图中#xff0c;各种红橙…上周一个偶然的机会听同事提到了Java FlameGraph刚实验了一下效果非常好。 一、什么是FlameGraph 直接看图说话。FlameGraph 是 SVG格式矢量图可以随意扩大缩小看不清的信息可以放大看。图中各种红橙黄色没有什么意义仅仅做区分用x轴横条宽度来度量时间指标表明每个接口实际占用的CPU时间y轴代表线程栈的层次从最底下往上表示堆栈的层层调用。通过看图可以发现哪个接口占用的CPU时间较多从而优化同时可以发现调用关系。   Java火焰图的作者是Brendan Gregg他的博客非常有意思很多关于性能的分析。以下链接是对每个类别的火焰图的详细说明。 什么是Java Flame GraphsJava Flame Graphs On-CPUCPU Flame Graphs Off-CPUOff-CPU Flame Graphs MemoryMemory Leak (and Growth) Flame Graphs Hot/ColdHot/Cold Flame Graphs DifferentialDifferential Flame Graphs 关于火焰图的PPT讲解得非常详细Blazing Performance with Flame Graphs   二、如何生成 两个步骤1. 需要java profiler生成trace文件  2. 将trace文件转换为svg格式的火焰图文件。 1. 需要java profiler生成trace文件 在使用Profiler对CPU进行采样时根据CPU当前执行所处栈位置以及各个函数栈在总的采样次数所占比例就可以得出各个函数执行时的CPU占用比例。常用的是lightweight-java-profiler。还有其他的选择比如honest-profilerlightweight-java-profiler会从java虚拟机启动开始采样而有时候我们需要在CPU飙高的时候开始这时候honest-profiler提供的动态启停功能就有用武之地了。也有使用perf生成火焰图。*perf 要研究一下 下面以lightweight-java-profiler 举例 1 从github下载软件 2 编译 make all 3 生成的程序存放在build-64文件夹下面 4可选可以更改一些lightweight-java-profiler的一些选项打开src/globals.h文件。在长时间采样时可以适当地减少每秒采样次数不然最终生成的文件会很大分析起来比较麻烦。 // 每秒采样频率 static const int kNumInterrupts 100; // Maximum number of stack traces线程栈个数 static const int kMaxStackTraces 3000; // 采样栈深度 static const int kMaxFramesToCapture 128;     kNumInterrupts: 每秒钟抽取样本的次数   kMaxStackTraces: 线程栈的最大数量      kMaxFramesToCapture: 线程栈的深度   5运行Java程序   java -agentpath:path/to/liblagent.so ...... 6java程序启动后会在当前目录生成一个traces.txt文件但文件中只有一些说明信息。程序正常结束不杀掉进程后才会写入具体采样信息。   2.将trace文件转换为svg格式的火焰图文件。 1从github下载FlameGraph 2转换  ./stackcollapse-ljp.awk traces.txt | ./flamegraph.pl traces.svg 3浏览器中打开traces.svg文件 三、简单讨论一下Java profiler 关于采样工具的选取可以看看文章 Evaluating the Accuracy of Java Profilers 这里面列举了xprofhprofjprofile和yourkit四种采样器并通过几个压测场景证明了这几种采样器的结果是相互矛盾的。总结的原因有两点 1. 采样器采样点不够随机这几种采样器都只有在safe point采样 2. 不同的采样器会注入不同的代码从而影响程序优化过程同时也影响了safe point的分布进一步造成采样差异 honest-profiler号称是避开了通过SUN/Oracle management agent去采样堆栈而是使用自己实现的使用UNIX 操作系统信号和为Oracle Performance Studio 设计的内部API的sampling agent从而提升了采样准确率。 还有一篇文章和 Why many profilers have serous problems。 Java profiler 的两个常见方式 1.修改代码从而实现采样。问题是1. 增加开销2. 修改了你的代码导致java编译器的优化行为不确定3. 影响了代码的层次层次越深自然也影响 执行效率。 2.通过获取on-cpu线程的线程栈方式。问题是获取系统范围的线程栈jvm必须处于safepoint状态看文章What is Java safepoint。只有当线程处于safepoint状态的时候别的线程才能去获取它的线程栈而这个safepoint是由jvm 控制的这对于profiler非常不利有可能一个很热的代码块jvm不会在该代码块中间放置safepoint导致profiler无法获得该线程栈导致错误的profiler结果。 几个商用的profiler工具都存在上述问题。但是Oracle Solaris studio利用的是jvmti的一个非标准接口AsyncGetCallTrace来实现不存在上面问题Jeremy Manson也利用该接口 实现了一个简单的profiler工具lightweight-java-profiler。   相关知识 部分内容摘自 http://blog.csdn.net/c395318621/article/details/55224665 部分内容摘自 http://tacy.github.io/blog/2014/07/16/FlameGraph/ 部分内容摘自 http://www.javashuo.com/content/p-6579579.html 部分内容摘自 http://colobu.com/2016/08/10/Java-Flame-Graphs/ 文章 Evaluating the Accuracy of Java Profilers   文章 Why many profilers have serous problems。 文章 What is Java safepoint    转载于:https://www.cnblogs.com/xingzifei/p/7446264.html
http://wiki.neutronadmin.com/news/11305/

相关文章:

  • 做网站怎么制作小规模公司做网站成本是什么
  • 深圳建设工程交易网站成都小程序开发一个多少钱啊
  • 购物网站答辩ppt怎么做wordpress 360收录
  • 做书封面的网站网站页头背景
  • 深圳产品设计招聘信息台州企业网站seo
  • 优秀包装设计作品及解析珠海百度快速优化
  • 社交网站开发 转发上海58同城官网
  • 江苏通信建设交易中心网站公司微网站怎么做的
  • 问答网站如何优化wordpress分类目录用别名
  • 网站首页幻灯片尺寸深圳市保障性住房申请官网
  • 专注网站建设11年青岛公司logo设计
  • asp 茶叶网站模板张家口网站建设哪家服务好
  • 南昌市建设网站定制网站建设服务公司
  • 企业网站建设综合实训心得做视频网站可行吗
  • 长春制作门户网站的公司手机设计网站公司
  • 湛江做网站制作购买网络商城系统
  • 没有注册公司怎么做网站网站开发实践实验报告
  • 做网站哪家好 要钱广州网站设计成功刻
  • 网站404页面制作方法深圳软件公司名录
  • 北京电商网站开发公司哪家好腾讯云服务器官网
  • 网站策划模版各大搜索引擎提交入口地址
  • 广东网站设计费用网站建设郑州
  • 新乐市建设银行网站宁波seo排名优化价格
  • 包头天亿网站建设公司品牌营销案例分析
  • 莒南网站建设网站建设技术总结
  • 如何做网站的埋点医院网站建设管理规范
  • 公司备案号查询网站做网站哪里比较好
  • 广东源江建设集团有限公司网站环保h5微网站
  • 做论坛网站需要多少钱深圳网站建设注册
  • 论坛做网站好吗湖南网站seo营销