2017-10-22 14 views
0

これは、ソースコードにブレークポイントを置くことによってJVMとやりとりするアプリケーションやIDEを開きますが、JVM内で何か変更があることはわかっています。私。 jvmはより遅く実行されます(ブレークポイントがなくても)、jvmは別の方法で実行されますが、基本的には、このフラグがJVMに内部的に何を行うのか不思議です。JVMの `-jvm-debug 5005`の変更は何ですか?

答えて

2

このオプションは、JDWP agent libraryをオンにします。 JVM TIエージェントであるこのライブラリは、多くの(すべてではないにしろ)多くのJVM TI capabilitiesを有効にします。一部の機能は無害ですが、一部の機能はパフォーマンスに影響します。

たとえば、can_access_local_variables機能ではエスケープ解析が無効になっているため、特定の最適化(割り当ての削除など)が不可能になります。 can_pop_frameおよびcan_force_early_return機能は、インタプリタがVMに呼び出すときにいくつかの追加チェックを追加します。 can_generate_method_entry_eventsは、各メソッドエントリのインタープリタに余分なチェックを追加します。

エージェントは、デバッガがアクティブでなくても、(あまりにも大きすぎませんが)いくらかのオーバーヘッドを追加します。

関連する問題