在IntelliJ Idea中进行调试时,如果我在方法签名上设置了断点,它会警告我性能下降。但是,我所做的只是将它放在函数中的第一个可执行代码行中,它可以用于我的目的。
我的理解是,如果我看到函数,我肯定会在函数内部第一行可执行代码之前看到,但IntelliJ不同意。我希望看到这两种不同的调试方法有什么区别?
答案 0 :(得分:1)
使用方法断点创建了每次调用方法时都需要检查以确定是否需要为应用程序上的每个方法调用中断它。它们还禁用JVM优化,例如方法内联。
无论如何,这个问题与IDEA无关,甚至可能适用于其他编程语言。
答案 1 :(得分:0)
在我面前没有IntelliJ IDEA,但是基于documentation,我认为使用方法断点你实际上并没有进入方法实现,而是逐步进行方法调用。这可能是性能影响的原因,因为IDEA必须遍历调用者堆栈,而不是在行断点的情况下在单个方法中遍历代码行。