キモは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自体を拡張しちゃう、なんて力技は可能なんでしょうかね?
それも楽しみとして、残しておきましょう。
いや、決して先延ばしにしてるわけじゃないですよ、決して。