0

我读过这在(现已退役的)Harmony JVM中是可能的,但是 Hotspot JVM 呢?这可能吗?如果没有,断点是否会阻止代码被 JITed,这意味着断点的成本更高?

4

1 回答 1

1

发生的情况是 JVM 取消优化该方法以允许向其添加断点。

去优化并不一定意味着该方法返回为字节码形式并且仅被解释。但它可能会撤消重新排序代码、内联方法等的优化。这些使得调试器很难将执行状态与源代码联系起来……这就是程序员所关注的。

但是,是的,在调试模式下运行代码确实会使其变慢。


这样想,当您在符号调试器中调试 C 可执行文件时,C 代码已(静态)编译为本机代码并链接。然而,调试器能够插入断点、单步执行代码、查看堆栈上的变量等等。

如果有的话,JVM 更容易做到这一点……因为 >>it<< 控制编译为本机代码。

于 2020-05-11T12:33:29.993 回答