1

私がやりたいことは、1 つの JVM アプリケーションの実行中に発生したロックの数を数えることです。(ロック番号は実行ごとに変わる可能性があることは知っていますが、平均番号を取得したいだけです)。また、これは 1 つのベンチマークであるため、アプリケーションを変更することはできません。

JRockit-JDK を使用しようとしましたが、2 つの問題があります。

  1. -Djrockit.lockprofiling=true はプロファイル情報を提供しません (リンク);
  2. 「-Xverbose:locks」は正しい情報を出力しますか?

私が使用しているプラ​​ットフォームは Ubuntu サーバーです。これに関する提案は大歓迎です。

4

1 に答える 1

0

これを行うために、以前はロックを検出するポイントカットとカウンターで AspectJ を使用しました。

public aspect CountLocks{

   private static AtomicInteger locks = new AtomicInteger();

   before(Object l) : lock() && args(l) { locks.incrementAndGet(); }

   after() : execution(void main(String[])) { System.out.println(locks+" locks"); }

}

しかし、これには明らかにコードの織り込みが含まれ、そのパフォーマンス特性が変わる可能性があります。

于 2014-02-20T10:59:32.437 に答える