Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法签名上的断点和方法中第一行上的断点之间的差异_Java_Debugging_Intellij Idea - Fatal编程技术网

Java 方法签名上的断点和方法中第一行上的断点之间的差异

Java 方法签名上的断点和方法中第一行上的断点之间的差异,java,debugging,intellij-idea,Java,Debugging,Intellij Idea,在IntelliJ Idea中调试时,如果我在方法签名上放置断点,它会警告我性能低下。然而,我所做的只是将它放在函数中的第一行可执行代码上,它就我的目的而言运行良好 我的理解是,如果我看到函数,我肯定会看到函数中第一行可执行代码的前面,但IntelliJ不同意。我希望看到这两种不同的调试方法有什么不同 在我面前没有IntelliJ的想法,但是基于,我认为使用方法断点实际上并不是在方法实现中,而是在方法调用中一步一步地进行。这可能是性能影响的原因,因为IDEA必须遍历调用程序堆栈,与使用行断点时只

在IntelliJ Idea中调试时,如果我在方法签名上放置断点,它会警告我性能低下。然而,我所做的只是将它放在函数中的第一行可执行代码上,它就我的目的而言运行良好


我的理解是,如果我看到函数,我肯定会看到函数中第一行可执行代码的前面,但IntelliJ不同意。我希望看到这两种不同的调试方法有什么不同

在我面前没有IntelliJ的想法,但是基于,我认为使用方法断点实际上并不是在方法实现中,而是在方法调用中一步一步地进行。这可能是性能影响的原因,因为IDEA必须遍历调用程序堆栈,与使用行断点时只在单个方法中遍历代码行相比。

使用方法断点需要在每次调用方法时进行检查,以确定是否需要为应用程序上的每次方法调用中断该方法。它们还禁用JVM优化,例如方法内联


不管怎么说,这个问题与想法无关,甚至可能适用于其他编程语言。

在这两种情况下,每次调用该方法时,它不需要中断吗?它需要中断,但这不是重点。通过设计,jvm(hotspot?)在评估其他方法及其结果时失去了一些优化特性。这里还简要介绍了: