さまざまな問題のトラブルシューティングを行うためにシステムのスレッド ダンプを取得してきましたが、1 つ気づいたことは、良い時も悪い時も、スレッド ダンプには次のようなものがたくさんあるということです。
"TP-Processor59" - Thread t@915
java.lang.Thread.State: RUNNABLE
at java.lang.Class.getEnclosingMethod0(Native Method)
at java.lang.Class.getEnclosingMethodInfo(Class.java:929)
at java.lang.Class.getEnclosingClass(Class.java:1081)
at java.lang.Class.getSimpleBinaryName(Class.java:1220)
at java.lang.Class.getSimpleName(Class.java:1112)
ここで、構成システムが依存する getSimpleName() を多数呼び出します。しかし、私の質問は、なぜ彼らはいつもこの特定の方法に巻き込まれるのですか? これは Windows JVM、1.6.0_29、64 ビットです。
getSimpleName() は一般的に非常に高速な呼び出しであるべきだと思います。これはおそらく getEnclosingMethod0() が何らかの形で非常に遅いのでしょうか、それともネイティブ メソッドが何かをブロックしている可能性がありますか (もちろん、JVM スレッド ダンプには表示されません)。