V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
aheadlead
V2EX  ›  分享创造

第一个开源项目: libcjstat,一个简单的 C API 用于采集 Java 虚拟机运行状况,以代替 jstat

  •  1
     
  •   aheadlead · 2015-11-09 17:43:59 +08:00 · 2613 次点击
    这是一个创建于 3287 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚考完汇编,容我吐槽一下。人肉编译器,没有 stdio.h 里面的一切,有一题,让我读入 10 个“有符号”数,排序输出。看上去简单,妈蛋我人肉编译写了两大张 A3 纸(字是大点)还没编译完,然后交卷了……

    --------

    正题:

    大家好。

    大二实习的时候,干了一个 JVM 集群垃圾回收性能采集呈现的工作,当时集群里面一个机器上跑几十上百个 JVM 。我们关心她的 FGC 、 FGCT 这样的指标。但是,使用 jstat 一个个去采的话,性能上是不可接受的。

    于是稍微研究了下 jvm 和 openjdk 代码,发现了 hsperfdata 这个文件。接着在 github 上发现了 twitter 的一个 Python 库,可以用于解析 hsperfdata ,进而透过 jstat 源码可算出 FGC 的值。不过 Python 实在太慢。

    我拥抱变化归来后,就用 C 写了个库,直接提供一个 C 的 API ,就可以访问一个 JVM 的 jstat 的指标。

    代码应该没啥特别的地方的。但这是我第一个开源作品,任何方面都欢迎大家拍砖点评。

    谢谢(考完汇编大脑蛋疼中)
    第 1 条附言  ·  2015-11-09 19:24:49 +08:00
    果然考汇编考成傻子了 忘了贴地址
    https://github.com/aheadlead/libcjstat

    其实写完就准备 po 上来 但是花时间预习汇编去了……
    8 条回复    2015-11-11 15:55:52 +08:00
    lytofb
        1
    lytofb  
       2015-11-09 18:19:31 +08:00
    代码呢啊?同学
    fire5
        2
    fire5  
       2015-11-09 18:36:32 +08:00
    加油,哥们。
    mingyuan2011
        3
    mingyuan2011  
       2015-11-09 18:44:45 +08:00
    不明觉厉,不过还是贴一下代码地址,我想长姿势。
    aheadlead
        4
    aheadlead  
    OP
       2015-11-09 19:23:50 +08:00
    macrosea
        5
    macrosea  
       2015-11-10 00:17:27 +08:00 via iPhone
    mark
    zzlyzq
        6
    zzlyzq  
       2015-11-10 19:01:41 +08:00
    牛逼啊哥们, 我们正在搞这个,下下来研究下,谢谢啦~
    zonghua
        7
    zonghua  
       2015-11-11 01:06:12 +08:00 via iPhone
    大二就会研究 jvm 啦
    aheadlead
        8
    aheadlead  
    OP
       2015-11-11 15:55:52 +08:00
    @zzlyzq 多多交流
    @zonghua 实习的干的活呢……平常应该不会想到去接触 jvm
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   972 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:13 · PVG 05:13 · LAX 13:13 · JFK 16:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.