我正在远程调试Java应用程序,调试器向我展示了与我预期不同的信息。源文件已正确链接。有可能,jvm优化可以改变指令的顺序吗?
答案 0 :(得分:1)
这取决于。
如果JVM可以确定结果是相同的,那么JVM(尤其是Hotspot或JIT编译器)可能会更改指令。
使用Oracle JVM,您可以提供禁用JIT和Hotspot的选项-Xint
,并确保执行的代码与写入的代码相同。
答案 1 :(得分:0)
例如,当远程调试时,我对代码进行了更改时遇到了不一致,而这些代码还没有推送到服务器。因此,当我在服务器上调试旧版本时,调试器有时会指向我的代码中的行,这些行是空的或者是使用不同的方法,因为它仍然指向先前相关的行号。 当我同步服务器和我的本地代码库时,一切都很好。