1

Java アプリケーションをリモートでデバッグしていて、デバッガーが予想とは異なる情報を表示しました。ソース ファイルが正しくリンクされました。jvm最適化が命令の順序を変更する可能性はありますか?

4

2 に答える 2

1

これは依存します。

JVM (特に Hotspot または JIT コンパイラー) は、結果が同じになると判断できる場合、命令を変更することがあります。

Oracle JVM を使用-Xintすると、JIT とホットスポットを無効にするオプションを指定でき、実行されるコードが記述されたものと同じであることを確認できます。

于 2013-07-10T08:34:21.777 に答える
0

たとえば、リモートでデバッグしているときに、サーバーにまだプッシュされていないコードに変更を加えたときに矛盾が発生しました。そのため、サーバーで古いバージョンをデバッグすると、デバッガーは以前に関連した行番号をまだ参照していたため、コード内の空の行または別のメソッドの行を指すことがありました。サーバーとローカル コード リポジトリを同期すると、すべてが正常に戻りました。

于 2013-07-10T08:55:23.577 に答える