私たちのアプリケーションには〜10のスレッドが別々のタスク(スレッドプールなし)を持っています。デッドロックは発生していませんが、要求に応答するために待ち時間を短くしようとしているので、どのロックが最も競合しているかを判断することに関心があります。 jconsoleは、スレッドがブロックされる頻度を示しています。非常に頻繁ではありませんが、最も重視されているロックを知りたいと考えています。最も競合しているロックを特定しますか?
私たちはSun JVMを使用しているため、IBMのJLAは役に立たず、Solarisでは動作していないため、dTraceを使用することはできません。
編集:プロデューサーがアプリを受け入れられないほど遅くするような、この観測をプロダクションで行いたいと思います。これは取引システムです。遅い場合は金銭を失うため、生産時にはプロファイラを実行しません。また、パフォーマンステストで話す多くの交流をシミュレートするのは非常に難しいです。
dTraceは私が個人的に知っている唯一のシステムであり、プロファイリングツールなしであなたが望むのはそれだけです。 – aperkins
これについてもっと考えてみると、私は計装が最良のアプローチだと感じています。個々のロック要求をログに記録するか、グローバルカウンタを保持することができます。 –