如果你问我最喜欢的Clojure工具,前五名的话一定会有 Clojure 的火焰图工具 Flames [jstepien/flames] 。

火焰图对于现代的程序员不应该陌生,这个工具可以非常直观的显示出调用栈中的CPU消耗瓶颈:

火焰图工具几乎都是由同一组底层工具支撑的,大部分都遵循:Profile->收集 Profile 日志 -> 生成火焰图 -> 分析问题的流程,但是这个 Clojure 库,却可以近乎实时的生成火焰图,提供实时查看,能够极大的提高工作效率。

实用它只需要引入依赖:

[flames "0.4.0"]

然后在项目里写几行代码:

(require '[flames.core :as flames])

(defflames (flames/start! {:port 54321, :host "localhost"}))

非常简单直观。

需要注意的是,与其它大部分火焰图工具一样,这个库也是在底层依赖一组基于 Perl 的性能剖分工具来生成图表,所以在windows上可能会遇到类似“找不到 perl”这样的错误提示。但是它在 MacOS 和 Linux上都没有任何问题。

图形是 svg,每个函数可以点击进去查看局部的调用栈,项目比较大的时候,往往会看到应用逻辑被画在一个尖细的高峰中,此时这个功能就很体贴了。

后面的章节中,如果我们构建了比较适合展示性能剖分过程的场景,就向大家演示一下这个工具具体使用。

java火焰_现代化的Java(十三)——火焰图相关推荐

  1. groovy 使用java类_深入学习java中的Groovy 和 Scala 类

    前言 Java 传承的是平台,而不是语言.有超过 200 种语言可以在 JVM 上运行,它们之中不可避免地会有一种语言最终将取代 Java 语言,成为编写 JVM 程序的最佳方式.本系列将探讨三种下一 ...

  2. java 枚举_深入理解Java枚举

    所有知识体系文章,[GitHub](https://github.com/Ziphtracks/JavaLearningmanual)已收录,欢迎Star!再次感谢,愿你早日进入大厂! https:/ ...

  3. java翻译程序_有没有java代码翻译软件?

    展开全部 没有翻译软件,但是能32313133353236313431303231363533e78988e69d8331333365646333编写翻译程序. java 代码翻译实例: 1.输入一个 ...

  4. 《跟旺旺老师学Java》_第一章Java简介与JDK部署_第一部分Java是什么

    第一章:Java简介与JDK部署 第一部分:java是什么 "是白云,是瀑布,是海滩,不---,都不是,这是太原大理石二厂生产的景云牌大理石"看到这个标题,脑海中莫名的闪过这句小时 ...

  5. opencv java 摄像头_使用OpenCV Java创建Windows摄像头扫码程序

    OpenCV提供了一些基本的Webcam控制接口.用OpenCV C/C++或者Python,可以在任意平台快速创建一个摄像头预览应用.然而使用Java,情况就复杂的多,因为OpenCV Java并没 ...

  6. java横线_知识点:java一些方法会有横线?以Date 过期方法为例

    原因:他们的开发者在升级方法后,添加了@Deprecated注释, 目的是为了提醒我们,这个方法现在已经有新的方法了,不建议继续使用! 比如: JAVA中Date的tolocalstring为什么不建 ...

  7. java学习_都说Java难学,不知道具体的学习内容?全套Java学习路线送上

    首先,我个人比较推崇的学习方法是:先学java前段,也就是HTML,css,js,因为学习java以后肯定是往java ee方向发展的,学习完前端,在学习后端很多东西比计较容易理解! 其中J2SE是关 ...

  8. 本地生活JAVA版本_赶集生活java版

    赶集网java版客户端 特色介绍: * 丰富的特色功能:一键拨号.GPS定位.本地收藏.拍照发帖,比电脑还方便. * 全面的服务功能:房屋租售.二手买卖.火车票转让.家政.开锁等全方位服务. * 极致 ...

  9. java 虚拟机_浅谈Java虚拟机内存区

    1. Java 虚拟机内存区概述 我们在编写程序时,经常会遇到OOM(out of Memory)以及内存泄漏等问题.为了避免出现这些问题,我们首先必须对JVM的内存划分有个具体的认识.JVM将内存主 ...

最新文章

  1. 使用 Python 的图像隐写术
  2. 好玩的东西——一个代码片段
  3. python数组和列表_Python-01矩阵、数组和列表等的总结
  4. python 多进程——使用进程池,多进程消费的数据)是一个队列的时候,他会自动去队列里依次取数据...
  5. 深度学习算法原理_用于对象检测的深度学习算法的基本原理
  6. 【转】SharePoint Content Database简介
  7. 没有bug队——加贝——Python 57,58
  8. cleanmymac3.9.6_Android Studio 3.6 特征大揭秘
  9. Session自定义存储及分布式存储
  10. 【Matlab系列】惩罚函数法(内点法、外点法)求解约束优化问题最优值 matlab
  11. fc安卓模拟器_MAME街机模拟器0.224经典游戏全收藏
  12. kafka集群搭建超详细教程
  13. GIS实验之制作地形地貌图
  14. Wifi认证及加密详解
  15. NowcoderGirl编程比赛(三)
  16. python 图片/语音文件实现base64的转换与解析
  17. 【数学建模】十:MATLAB CUMCM真题求解实例一:数据型
  18. 使用轻量级虚拟桌面基础架构 (VDI) 解决方案降低 IT 成本并保护数字知识产权
  19. manjaro安装-制作安装U盘
  20. java http获取cookie_java – 通过HttpClient接受所有Cookie

热门文章

  1. 【傅老师DarkSouls第一季】03
  2. 图灵机与冯诺依曼计算机,计算机原理之图灵机与冯诺依曼机.doc
  3. 嵌入式linux开发,/lib/libc.so.6: version `GLIBC_2.17‘ not found (required by /.../lib/libpaho-mqtt3a.so.1)
  4. python 多继承算法
  5. 废除金本位:银行家赋予罗斯福的历史使命
  6. 面试中浅谈Spring IOC
  7. 深入理解Java虚拟机 -- JMM(Java内存模型)
  8. 设立股份有限公司的条件及要求
  9. 从 DogeCoin 的成功来分析 Meme 模因值得 All in 吗?
  10. 旅游行业网站怎么搭建?