Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.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_Performance_Reflection_Profiling - Fatal编程技术网

Java 附加探查器是否会导致某些东西比其他东西运行得慢?

Java 附加探查器是否会导致某些东西比其他东西运行得慢?,java,performance,reflection,profiling,Java,Performance,Reflection,Profiling,是否可能将探查器附加到JVM(比方说VisualVM)会使某些方法运行较慢,而不会影响其他方法,从而导致结果出现偏差,使某段代码看起来像是一个热点,而实际上并非如此。我将专门询问有关反射调用的问题,作为一个示例。我运行的一些代码显示了在Spring AOP调用中花费的大量时间(特别是invokeJoinpointUsingReflection)——作者说这些代码在测试中运行得很好(使用代码内微基准),但当他们分析时,它显示这种方法比其他非反射方法花费的时间更长。(抱歉,如果这有点不清楚)所以我想

是否可能将探查器附加到JVM(比方说VisualVM)会使某些方法运行较慢,而不会影响其他方法,从而导致结果出现偏差,使某段代码看起来像是一个热点,而实际上并非如此。我将专门询问有关反射调用的问题,作为一个示例。我运行的一些代码显示了在Spring AOP调用中花费的大量时间(特别是invokeJoinpointUsingReflection)——作者说这些代码在测试中运行得很好(使用代码内微基准),但当他们分析时,它显示这种方法比其他非反射方法花费的时间更长。(抱歉,如果这有点不清楚)所以我想知道探查器是否真的会有这种效果,并导致开发人员走上错误的道路。请随意回答任何示例,反射部分只是我的示例。

大多数探查器都是基于样本的,因此收集的数据越多,结果就越准确。据我所知,对纯Java编写的方法没有偏见。

海森堡有一个著名的观察,从系统收集信息总是会干扰它,所以你不能得到一个不受干扰的观察结果。(因此,软件术语“海森堡”)。是的,收集分析信息可能会导致实际性能发生改变,从而误导您


对于您的特定JVM或探查器来说,这在很大程度上是否正确,以及发生了多少干扰,这是一个工程问题。

某些探查器需要一个校准步骤,例如和。您可以验证所选探查器的年份和设置。

探查器通常会提供错误的引导信息,但通常它们是正确的。他们倾向于扭曲结果的地方是非常简单的方法,如果不启用评测,这些方法可能会得到进一步优化


如果有疑问,我建议您使用另一个探查器,例如YourKit(评估版应该可以),它具有更轻的记录重量,但可能存在相同的问题。

一些探查器是基于采样的。有些是基于仪器的。有些人使用其他手段。YMMV.仪器和取样不是相互排斥的。