![]() |
1
16
我不能代表HotSpot,也不会正式代表IBM,但我要说的是,如果在其中需要反编译,那么肯定有一些合法的优化不可能完全撤销,因此在您可能使用的生产jvm中要求调试时,这些优化是不启用的。 假设优化器发现程序的一部分是可证明的不需要的,并且根据各种语言规则(包括jsr133)删除是合法的,JVM会想要删除它。其中一个问题是调试:删除代码对于单步执行代码的人来说是很奇怪的(变量没有更新,单步执行时可能没有停在行上),所以在这些情况下,可以选择禁用上述优化。对于堆栈分配对象等选项也可能如此。。因此,尽管JVM说它是“全速”的,但实际上它更接近“接近全速,有些更有趣的选项不能完全撤销”。 |
![]() |
2
5
在Java6(ish)之前,您使用了-Xdebug,这有一定的影响,它关闭了JIT! 在Java6中,他们将其更改为-agentlib并使其更好。虽然存在一些bug,但确实会导致性能下降。以下是针对openjdk的一个bug,我猜oracle/sun版本也有类似的问题: https://bugs.openjdk.java.net/browse/JDK-6902182 但是,请注意,声明的目标是通过打开端口来启用调试不应导致任何性能损失。
如果您进一步研究这个问题并发现负面结果,请注意测试所使用的java版本——我看到的所有内容都是指7之前的版本。 我很想知道是否有人遇到性能问题,在最近的虚拟机刚刚离开港口启用。 |
![]() |
3
4
如果您计划在启用远程调试的情况下运行应用程序,它也会影响安全性。远程调试在您的机器上留下一个打开的端口,通过连接到它,我可以用您的应用程序做各种有趣的事情。 |
![]() |
4
1
|
![]() |
SRobertJames · 使用printf的gdb显示 1 年前 |
|
Subin · 在vscode中运行c时出错 1 年前 |
![]() |
Community wiki · 如何调试Python内存故障? 1 年前 |
![]() |
Kai · 有什么方法可以轻松优化VSCode中的锈迹? 2 年前 |
![]() |
Chris Brandon · 如何使节点在堆栈溢出时中断? 2 年前 |