从jHiccup开始

写完“如何在生产中检测和诊断慢速代码”一文后,我受到读者的鼓励,尝试从Azul系统尝试jHiccup 。

去年,我参加了jHiccup的创建者Gil Tene的演讲,探讨了测量延迟的正确方法,其中,他向我们介绍了jHiccup。 它一直在我的待调查产品清单上,这给了我最终继续进行调查的动力。

JHiccup可以测量实际程序代码以外的系统延迟。 例如,GC时间以及其他操作系统和硬件事件会增加延迟峰值,从而使程序的运行平稳。 了解这些至关重要,因为您的程序永远不可能比运行它的基础环境具有更好的延迟。

简而言之,我喜欢这个工具,并认为,既然我已经开始使用它,那么它将对我真的很有用。 这篇文章并不是要教您有关jHiccup的所有知识,我将为您提供有关它的文档 。 这个职位是一个“ 开始接触jHiccup指南”,告诉你我是如何得到它的运行,希望激起你的食欲尝试一下在自己的代码。

步骤1:下载产品

下载代码,它是开源的,您可以从此处获取。 解压缩文件,您将看到我们将在下一步中使用的jHiccup.jar。

步骤2:使用jHiccup运行程序

运行jHiccup的方法有很多,但这就是我的方法。 您需要做的就是将此vm选项添加到命令行中:

-javaagent:jHiccup.jar="-d 0 -i 1000 -l hiccuplog -c"

有很多配置,这里选择的意思是:

  • -d开始记录等待时间之前的延迟–这可以忽略任何代码预热时间。 (30秒后默认)
  • -i间隔数据,记录数据的频率。 (默认每5秒一次)
  • -l记录数据的日志文件的名称。
  • -c启动控件JVM并将数据记录到logFile.c。 与实际程序进行比较以查看是否是机器上的全局事件,超级有用。

步骤3:处理日志文件

在日志文件上运行此命令(您可以同时处理程序日志文件和.c控制日志文件)。

jHiccupLogProcessor -i hiccuplog -o myhlog

这将产生两个文件,我们将在最后一步中使用一个调用myhlog(不是myhlog.hgram),这很有趣。

步骤4:在Excel中产生图形

现在,非常好一点。 打开电子表格jHiccupPlotter.xls,并确保启用了宏。

您将看到一个这样的表:

屏幕截图2015-02-20 at 12.19.38

只需从第3步中选择文件,然后选择一个图表标题(当您比较图表时,这是一个非常有用的功能),并且在几秒钟之内您将拥有一个延迟分布图。

我有一个程序(不是特别对延迟敏感的),想了解不同垃圾收集对延迟的影响。

我要做的就是用不同的垃圾收集器设置运行我的程序并比较图表。 当然,这是我刚好不得不手工制作的示例,但是您明白了,更改jvm设置或代码并获得可比较的结果很容易。 控制程序对于了解计算机上正在发生的其他可能影响程序延迟的情况也至关重要。

这些是我的结果:有趣的是看到不同的GC如何影响延迟,并且使用jHiccup可以很好地证明这一点。

使用串行收集器:

屏幕截图2015-02-20 at 12.32.46

使用G1收集器:

屏幕截图2015-02-20 at 12.36.42

使用G1收集器–最大暂停时间设置为1ms:

屏幕截图2015-02-20 at 12.41.42

使用CMS收集器:

屏幕截图2015-02-20 at 12.46.16

使用并行GC:

屏幕截图2015-02-20 at 12.49.25

翻译自: https://www.javacodegeeks.com/2015/02/starting-out-with-jhiccup.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nullnull使用PL/SQL获取创建用户的语句

在写这篇文章之前,xxx已经写过了几篇关于改nullnull主题的文章,想要了解的朋友可以去翻一下之前的文章 Create procedure: create or replace procedure get_case_sqls_for_ddls_ver1 ascursor get_username isselect username from dba_users;beginfor l_user in g…

axios发送post数据后台收不到_使用axios post 提交数据,后台获取不到

https://www.cnblogs.com/yiyi17/p/9409249.html(copyhttps://www.cnblogs.com/loveyaxin/p/8385694.html(copy问题场景场景很简单,就是一个正常 axios post 请求:axios({headers: {deviceCode: A95ZEF1-47B5-AC90BF3},method: post,url: /api/lockServe…

在JDK 8中连接字符串

JDK 8引入了语言功能,例如lambda表达式 , 流 ,甚至是新的Date / Time API ,这些都会改变我们编写Java应用程序的方式。 但是,还有一些新的API和功能可能不太“改变游戏规则”,但仍为Java编程语言带来了更大…

华为内部面试题库---(6)

1.在SMP体系结构中,中断亲和性是指将一个或者多个中断绑定到特定CPU core上运行,下列说法错误的是:A.每个硬件设备都会在/proc/irq下有个中断号命令的目录来标志中断亲和性B.IRQ#目录下smp_affinity文件,通过设置CPU位掩码&#x…

基元需要走吗?

我目前正在使用JSF作为视图技术,使用JPA作为持久层的企业应用程序。 它可能是支持bean或服务方法中的某种东西,但令我震惊:是否有充分的理由在企业应用程序中使用原语? 当我开始围绕J2SE 1.2使用Java进行编程(或者是J…

输入参数_太实用!输入参数1秒算出功率,这款计算工具又快又准

随着互联网红利的不断加深,到了后期,不断地各种工具开始涌现,方便了很多用户,填补了市场上的很多空白,有生活娱乐类、提高效率类、垂直专业类、系统工具类等等。工业行业作为各行各业的大头,机械化、智能化…

功能工厂模式

您是否需要一种非常快速的方法来制作Factory对象? 然后,您需要lambda或其他函数传递! 它不仅快速,而且非常简单。 我敢打赌,如果您对Lambdas相当满意,那么您只需阅读标题就可以做到这一点。 如果您是其中之…

指向二维数组的指针测试

定义a为二维数组后,有三种成份:数组本身、3个一维数组(a的每一行对应一个一维数组)、12个数组元素, 由此就有三种指针及对应的指针变量, &a和int (*p1)[3&#xff3d…

python视频流传输_基于OpenCV的网络实时视频流传输的实现

很多小伙伴都不会在家里或者办公室安装网络摄像头或监视摄像头。但是有时,大家又希望能够随时随地观看视频直播。大多数人会选择使用IP摄像机(Internet协议摄像机)而不是CCTV(闭路电视),因为它们具有更高的分辨率并降低了布线成本。在本文中,…

如何编写NetBeans插件

是否想在NetBeans IDE中添加功能或自动执行某些操作? 跟随我们编写您的第一个NetBeans插件。 让我们超越简单的工具栏示例 ,创建一个可以自动更新的插件。 该代码基于NetBeans的WakaTime插件 。 我们的示例插件将仅打印Hello World语句,并在…

单机最大tcp连接数

单机最大tcp连接数 网络编程 在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接。那么对单机,其最大并发tcp连接数是多少? 如何标识一个TCP连接 在确定最大连接数之前&#xf…

用了fastapi还需要nginx_nginx 与 fastdfs 的配置过程,已经越过了许多坑,我跪着进入了欢迎页面。。。...

nginx 与 fastdfs 的配置过程,已经越过了许多坑,我跪着进入了欢迎页面。。。上面的是 fastdfs 与 nginx 的官网,我从这里面跌跌撞撞的走出来了,下面是我总结出来的一条平坦的路,小伙伴们可以参考参考。我下面的攻略其实…

Spring Batch教程–最终指南

这是Spring批处理教程,它是Spring框架的一部分。 Spring Batch提供了可重用的功能,这些功能对于处理大量记录至关重要,包括日志记录/跟踪,事务管理,作业处理统计信息,作业重新启动,跳过和资源管…

Neurocomputing 投稿注意事项

1. *.tex 和 *.bib 都以Manuscript项(Item)提交 (abstract.tex除外)2. abstract.tex以Abstract项(Item)提交3. *.eps以Figure项(Item)提交4. biographies.pdf以Biography of the aut…

箱式图 添加异常值平均值_什么是脏数据?怎样用箱形图分析异常值?终于有人讲明白了...

导读:数据质量分析是数据挖掘中数据准备过程的重要一环,是数据预处理的前提,也是数据挖掘分析结论有效性和准确性的基础。没有可信的数据,数据挖掘构建的模型将是空中楼阁。数据质量分析的主要任务是检查原始数据中是否存在脏数据…

[编程相关]正则表达式Regex语法

--目录-- 0. 前言1. 正则语法2. 正则搜索语法(1)字符集 Character_Classes(2)锚定符 Anchors(3)计数 Quantifiers(4)分组与索引 Group_And_Reference(5)周围 …

窗口程序ImageView(仿QQ图片查看器)

近期一直在学习窗口程序之类的问题,下午正好有机会和大家讨论一下. 程序运行截图: 应用方法: 1、直接把图像文件拖到图标上表现 2、通过命令行方式,示例:ImageView.exe "带全路径的图像文件名称" 3、打开ImageView.exe&…

华为硬件工程师社招机考题库_干货:2016年华为中兴硬件工程师笔试题目与经验...

1。一位工科男在拿到华为实习生offer后的面经干货某211学校,机械学院研究生。不得不说一下,华为的员工们真的是认真做事,因为怕我们担心下班轮不到面试。工作人员特意去休息区告诉我们,不面试完他们不会下班,果然是个爱…

USACO3.15stamps(dp)

对dp很无奈。。枚举所有可能达到的值 dp[i]表示到达i值所用最少的邮票 1 /*2 ID: shangca23 LANG: C4 TASK: stamps5 */6 #include <iostream>7 #include<cstdio>8 #include<cstring>9 #include<stdlib.h> 10 #include<algorithm> …

thinkcmf搭建教程_5分钟快速入门

# 5分钟快速入门[TOC1,5]## 1.创建模板目录在public/themes/目录下创建quick_start目录## 2.添加模板描述文件在public/themes/quick_start目录下创建manifest.json文件&#xff0c;内容如下&#xff1a;{"name": "quick_start","version": &quo…