开源JVM Sampling Profiler

众所周知 ,大多数现有的采样Java Profiler都必须在安全的地方进行堆栈跟踪收集。 诸如采样探查器之类的探查器就是这种情况,它使用SUN / Oracle管理代理来收集其堆栈跟踪。 这种方法的问题在于,由于不是程序中的每个点都不是安全点,因此会引入样本偏差,还会引入JVM达到安全点所需时间的开销。
不久前,杰里米·曼森(Jeremy Manson) 开源了一些概念验证代码,在该代码中对AsyncGetCallTrace JVMPI方法进行了调用,从而避免了线程到达安全点以读取其调用跟踪的需要。 该代码在后台注册了一个处理程序函数,该函数在发生sigprof时被调用。 因此,它避免了其他采样分析器遭受的许多分析器精度问题。 使用此方法的缺点是异步回调中的代码对其具有可怕的限制,例如无法堆分配内存。 概念证明代码显示出了很大的独创性,但是作为概念证明,它缺少有用的功能,例如用户界面或对查看程序运行时正在更新的概要分析数据的支持。

我已经完成了此代码转储,并开始将其转换为可用的开源项目。 该程序有两个主要部分。 有一个小型的C ++ jvmti代理,它写出一个日志文件来描述已附加到该应用程序的配置文件。 然后,Java 8应用程序可以基于此日志呈现/显示配置文件。 读写代码基于内存映射文件,因此,如果要将日志文件移动到tmpfs文件系统,它也可以用作共享内存IPC系统。 我还添加了一个GUI,虽然不是一个很好的GUI,但这只是一个开始。
分析器 生成日志文件意味着可以离线或追溯分析配置文件。 例如,您可以从性能测试运行中转出日志文件,然后如果发现生产中存在回归,则可以查看历史差异。 通过将当前堆栈跟踪复制到无阻塞,多生产者,单使用者循环队列中,此事件探查器可避免在异步回调中执行的严格限制,该队列预先分配了固定大小的内存块。 然后,另一个线程将这些堆栈跟踪信息写入日志文件中。 另一个线程还需要查找有关诸如方法名称之类的有用信息,因为JVMTI调用查找方法名称信息并不安全。

目前,该代码库尚未准备好投入生产 -我不完全信任很多错误和大量C / C ++代码。请记住,如果JVMTI代理中存在错误,则可能会出现段错误您的JVM。 您已被警告! 源代码位于github上,并且已获得Apache许可。 我将欢迎代码贡献者以及人们的任何反馈。 目前尚处于起步阶段,但我坚信公开开放代码有助于快速提高其质量。

参考: Insightful Logic博客上的JCG合作伙伴 Richard Warburton提供的开源JVM Sampling Profiler 。

翻译自: https://www.javacodegeeks.com/2014/03/an-open-source-jvm-sampling-profiler.html

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

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

相关文章

雷霆战机

前言 多年前,你我在一起"打飞机"。为了实现真正的打飞机,在下一年前踏足帝都学习了无所不能的Python,辣么接下来带你在俩个小时用200行代码学会打飞机。 python中提供了一个pygame的模块能够让我们快速编写一个游戏。接下来&#x…

FancyBox - 经典的 jQuery Lightbox 插件

FancyBox 是一款非常优秀的弹窗插件,能够为图片、HTML 内容和其它任务的多媒体内容提供优雅的弹出缩放效果。作为是最流行的 Lightbox 插件之一,可以通过 fitToView 实现自适应功能。主要特色: ✓ 能够显示图片、HTML 元素、SWF 影片、ifra…

php如何表格中的变为超链接,php中将网址转换为超链接的函数

php中将网址转换为超链接的函数复制代码 代码如下:function showtext($text){$search array(|(http://[^ ])|, |(https://[^ ])|, |(www.[^ ])|);$replace array($1, $1, $1);$text preg_replace($search, $replace, $text);return $text;}时间: 2011-08-311.根据…

Java面试参考指南–第1部分

JAVA面向对象的概念 Java基于面向对象的概念,它允许更高级别的抽象以实际方式解决任何问题。 面向对象的方法将实际对象中的问题解决方案概念化,从而更易于在整个应用程序中重用。 例如椅子,风扇,狗,电脑等。 在Java…

Odyssey.js – 使用现成模板在线创建互动的故事

Odyssey.js 是一个开源工具,它可以让你的地图,叙述和其他多媒体结合成一个美丽的故事。创建新的故事很简单,要求无非是一个现代的 Web 浏览器和一个好的想法。你可以使用现成的模板来控制和设计精美的布局,让你的故事的整体外观和…

100层楼扔两个鸡蛋的问题

转载自:http://blog.sina.com.cn/s/blog_6c813dbd0101bh98.html 两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。 有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置…

酷毙了!三种风格的全屏幻灯片效果【附源码下载】

今天,我们想向您展示如何创建平铺背景图像的幻灯片效果。其灵感来自于国外的一个工作室网站(围观),这个网站充满了各种有趣和创意效果,一定记得去看看。 这个幻灯片效果是由四个区域的独立移动构成,通过画面…

西游之路——python全栈——CRM项目之表结构设计

一、表结构设计 1 from django.db import models2 from django.contrib.auth.models import User3 4 """自带验证"""5 class UserProFile(models.Model):6 """用户信息表"""7 user models.OneToOneField…

你见过吗?9款超炫的复选框(Checkbox)效果

复选框(Checkbox)在各个浏览器中的效果不一致,因此很多 Web 开发人员会自己重新设计一套界面和使用体验都更佳的复选框功能。下面就给大家分享9款超炫的复选框(Checkbox)效果,纯 CSS3 实现,未使…

实用技巧:使用 Google Analytics 跟踪 JS 错误

Google Analytics(谷歌分析)不仅仅是一个流量统计工具,你还可以用它来测量广告活动的有效性,跟踪用户多远到所需的页面流(从点击广告到购物车到结账页面)获取,并基于用户的信息设置浏览器和语言…

从Ubuntu 14.04 LTS版升级到Ubuntu 16.04 LTS

Ubuntu 16.04 (Xerial Xerus) Long Term Support版于最近发布了。要想了解它的新功能和新特性,就必须升级或安装这个新系统。 本文讲述怎样一步步从Ubuntu 14.04 LTS版升级到Ubuntu 16.04 LTS版。要注意在升级前做好重要数据的备份,以免造成数据损失。因…

HTML5 Dashboard – 那些让你激动的 Web 技术

HTML5 Dashboard 是一个 Mozilla 推出的项目,里面展示了最前沿的 HTML5,CSS3,JavaScript 技术。每一项技术都有简洁,在线演示以及详细的文档链接。这些技术将成为未来一段时间 Web 开发的顶尖技术,如果不想落伍的话就赶…

通过自动回复机器人学Mybatis---基础版

第1章 案例简介 介绍要实现的案例情况,后面会通过这个案例来学习 Mybatis第2章 实战第一部----黎明前的黑暗 在没有 Mybatis 的情况下,使用 Jsp Servlet Jdbc 实现案例中的一个模块开发流程1: 开发流程2: 开发流程3:…

Scroll Depth – 衡量页面滚动的 Google 分析插件

Scroll Depth 是一个小型的 Google Analytics(谷歌分析)插件,可以让你衡量用户在页面上滚动了多远。它可以监控 25%、50%、75% 和 100% 四个滚动点,并发送谷歌分析事件。 您还可以跟踪页面上的特定元素是否滚动到视图中。例如在博…

aws ec2时间_AWS中自动化的三大领域,以避免支付过多的云账单

AWS是全球最常用的云服务之一。 Gartner Magic Quadrant将AWS评为最大的IaaS提供商。每个可能的域都由企业使用AWS服务。 全球约有 1,000,000家公司正在使用AWS作为其IaaS提供商。从Netflix到Unilever再到Met Office,每个人都转移到AWS上的云基础架构。既然您正在阅…

Croppic – 免费开源的 jQuery 图片裁剪插件

Croppic 这款开源的 jQuery 图片裁剪插件能够满足网站开发人员各种不同的使用需要。只需要简单的上传图片,就可以实现你想要的图像缩放和裁剪功能。因为使用了 HTML5 FormData 对象,所以目前只支持 IE 10 、Chrome 和 Firefox 等现代浏览器。 您可能感兴…

应用面向方面的编程

1.引言 面向方面的编程的主要目标是将跨领域的关注点分离。 当我们谈论跨领域的关注时,我们指的是在我们的系统或应用程序中的多个地方使用的通用功能。 这些概念包括: 记录中 交易管理 错误处理 监控方式 安全 实现这种分离的方法是将这些概念模块…

ScrollReveal.js – 帮助你实现超炫的元素运动效果

ScrollReveal.js 用于创建和管理元素进入可视区域时的动画效果,帮助你的网站增加吸引力。只需要给元素增加 data-scrollreveal 属性,当元素进入可视区域的时候会自动被触发设置好的动画。 您可能感兴趣的相关文章2013年最受欢迎的10篇前端开发博文小伙伴…

JDBC布尔兼容性列表

有趣的是,布尔类型只是在SQL标准后期才引入,即SQL:1999 。 即使在今天,并非所有数据库本身都支持BOOLEAN或BIT类型。 最重要的是,我们仍然可以在Oracle中等待一段时间。 这是2002年以来关于该主题的“问汤姆”的观点&a…

GDI+与WPF中的颜色简析

GDI与WPF中的颜色简析 原文:GDI与WPF中的颜色简析--------------------------------------------------------------------------------引用或转载时请保留以下信息:大可山 [MSN:a3news(AT)hotmail.com] http://www.zpxp.com http://www.brawdraw.com萝卜鼠在线图形…