谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

キモはBTraceUtils

なんだよ、制限多すぎじゃないか、ガッカリだ。
なんて思われるかもしれませんが、というか僕も思いましたが、
それを覆すだけの力を持っているのが、BTraceのライブラリ、BTraceUtilsです。


BTraceUtilsは、唯一BTraceから呼び出す事の出来るライブラリで、
問題解析のためのメソッドを数多く揃えています。


BTraceUtilsのAPIリファレンスはインターネット上にはないようですが、
btrace-bin.zipの中の、docs/javadocにあります。

解析用のAPIとしては、たとえば

  • currentThreadCpuTime() : 現在のスレッドの合計CPU時間を取得する。
  • currentThreadUserTime() : 現在のスレッドの利用したCPU時間を取得する。
  • deadlocks() : デッドロック検出結果を表示する。
  • heapUsage() : ヒープ使用量を取得する。
  • nonHeapUsage() : 非ヒープ領域の使用量を取得する。
  • jstack() : スタックトレースを表示する。
  • printFields(java.lang.Object obj) : フィールド一覧を表示する。

などがあります。


また、通常のツールとしてのAPIとしては、たとえば

  • newHashMap() : HashMapを作成する。
  • println(java.lang.Object obj) : 標準出力に文字列を表示する。

などがあります。


このBTraceUtilsこそが、解析のための手段となります。
ざっくり言えば、標準のMXBeanを使って出来ていたことや、取得できた情報は
大体、BTraceUtilsでも出来るかな、という印象があります。


このBTraceUtils自体を拡張しちゃう、なんて力技は可能なんでしょうかね?
それも楽しみとして、残しておきましょう。


いや、決して先延ばしにしてるわけじゃないですよ、決して。