jvm开源

众所周知 ,大多数现有的采样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

jvm开源

jvm开源_开源JVM Sampling Profiler相关推荐

  1. 开源 非开源_开源为善

    开源 非开源 by Michael D. Johnson 迈克尔·约翰逊(Michael D.Johnson) 开源为善 (Open Source for Good) We've spent two ...

  2. vue新手开源_开源新手宣布:征集作家

    vue新手开源 宣布下一个每月主题: 开源新手 开源项目花样繁多. 作家,程序员,营销人员,开发人员,项目经理,社区经理...清单还在继续. 有许多才干和个性类型有助于建立开源项目和社区的协作过程. ...

  3. 开源 非开源_开源突破“舒适区”

    开源 非开源 开源的 招贤纳士 有关开源工作和职业的文章的集合 . 我将以开发人员的身份加入DigitalOcean ,在此我将与PHP社区紧密合作,以帮助创造令人惊奇的事物! 我对此感到非常兴奋,尤 ...

  4. 互联网 性能 开源_开源的互联网25年及未来

    互联网 性能 开源 始于1969年的ARPANET如今已成为今天我们所知的Internet. 今年3月12日标志着万维网的25年. 当...开始时 1989年3月,欧洲核子研究组织(CERN)的科学家 ...

  5. 开源 非开源_开源周中的女性

    开源 非开源 欢迎来到Opensource.com的"开源女性周" Opensource.com将从1月27日至2月7日重点介绍女性在开源方面的努力.我们将把我们的某些内容专门针对 ...

  6. 特斯拉 开源_开源与癌症作斗争,特斯拉采用Coreboot,Uber和Lyft发行开源机器学习...

    特斯拉 开源 在本期开放源代码新闻摘要中,我们将介绍来自Uber和Lyft的机器学习工具,与癌症作斗争的开放源软件,通过开放教科书为学生节省的资金,以及更多! Uber和Lyft发布机器学习工具 如今 ...

  7. 医疗项目 开源_开源医疗IT的未来

    医疗项目 开源 弗雷德·特罗特(Fred Trotter)很容易辨认: 他是个身材高大的男人. 不管他是在挥舞着招牌的金发般的震撼力,还是像他每年一次那样剃光秃头,他都不会在人群中失踪. 在聚集了开源 ...

  8. 成本管理系统开源_开源教科书如何降低大学成本

    成本管理系统开源 Over the past 10 years, the cost of textbooks in the US has increased by 88%. This has cont ...

  9. jvm调试工具_调试JVM

    jvm调试工具 在某些(极少数)情况下,您可能会遇到使JVM本身崩溃的情况. 我最近通过将ThreadGroup的名称设置为null来进行管理 . 在这些情况下,调试JVM本身很有用,这样可以更精确地 ...

最新文章

  1. expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.spring
  2. 超越EfficientNet!MutualNet:一种自适应相互学习网络宽度和分辨率的网络
  3. python3 selenium webdriver 启动三大浏览器Firefox,Chrome,IE
  4. wireshark抓取https并解密方法一
  5. JZOJ__Day 5:【普及模拟】权势二进制
  6. Android-Frame布局,UI布局切换,录音,照相机,影音播放器,音频播放器
  7. Gulp和webpack的区别
  8. linux(系统centos6.5)常用命令总结
  9. Android开发之recyclerview布局加载不全的问题
  10. 众辰nz200变频器使用说明书_ABB变频器
  11. vscode 推荐premiter_自用VSCode优质插件推荐
  12. 天刀服务器维护到几点,3月3日服务器例行维护公告
  13. python 多列对齐_python – 如何连接两个数据帧并在这样的特定列上对齐?
  14. Servlet Cookie 处理
  15. php调用trait方法,PHP Laravel中的Trait使用方法
  16. Redis 概述、Win 10 下载安装、redis.conf 配置文件详解
  17. 数据安全产品与服务观察
  18. 《WEB开发- Web服务器环境搭建》使用花生壳+II7搭建网站服务
  19. woc,又一个大佬辞职了……
  20. idea 中ctrl+shift+数字的作用

热门文章

  1. 【图论】最短路上的统计(ssl 1500)
  2. 操作系统复习笔记 04 Process 进程
  3. 北方大学 ACM 多校训练赛 第十五场 蜘蛛牌A
  4. Spring Boot之基于Redis实现MyBatis查询缓存解决方案
  5. 腾讯面试题:一条SQL语句执行得很慢的原因有哪些?
  6. Java IO: 序列化与ObjectInputStream、ObjectOutputStream
  7. 并发编程 – Concurrent 用户指南
  8. 常用数据库连接串与驱动总结
  9. 《走遍中国》珍藏版(八)
  10. 《朝花夕拾》金句摘抄(六)