是否有可能将探查器附加到JVM(比如说VisualVM)可能会使某些方法运行得更慢,同时不会影响其他方法,从而导致结果出现偏差,使其看起来像某段代码是一个热点实际上并非如此。我会特别询问有关反射调用的例子。我正在运行一些代码,这些代码显示了在Spring AOP调用中花费了大量时间(特别是invokeJoinpointUsingReflection) - 作者说它在测试中运行良好(使用代码微基准测试),但是当他们分析它时显示这种方法需要更长时间,然后其他非反思方法。 (对不起,如果那个'有点不清楚)所以我想知道这个分析器是否真的有这种效果并导致开发人员走错路。随意回答任何例子,反思部分只是我的例子。
答案 0 :(得分:3)
对于您的特定JVM或分析器是否真的如此,以及发生了多少干扰,这是一个工程问题。
答案 1 :(得分:3)
Profilers经常提供错误的信息,但通常它们通常都是正确的。在他们倾向于倾斜的地方,结果是非常简单的方法,如果未启用分析,可能会进一步优化。
如果有疑问,我建议你使用另一个探查器,例如YourKit(evalation版本应该没问题)它有更轻量级的录音,但可能有同样的问题。
答案 2 :(得分:0)
大多数分析器都是基于样本的,因此您收集的数据越多,结果就越准确。据我所知,对于纯粹用Java编写的方法没有偏见或反对。
答案 3 :(得分:0)