抽样Java分析工具似乎是大多数开发人员的良药,然而你有没有想过这些工具到底可不可靠呢?你大概会认为这些工具应该是前沿技术,但事实并非如此。说白了,大多数抽样Java分析工具都非常糟糕。
为什么大多数抽样Java分析工具都如此糟糕呢?我们不得不从抽样方法本身入手。抽样方法很容易出现问题,因为它只取样了一小部分程序的运行状态,从而可能导致分析结果失真,因此如果你瞄准的是小问题,那么这些工具可能会奏效。但在解决大问题方面,这些工具就显得力不足了。
此外,抽样Java分析工具还需要判断哪些方法是“热点”(hot spot),这也是会导致分析结果偏差的因素之一。这些工具可能会错判一些不需要分析的线程,导致所获取的数据完全无用。
最后,我们还需要提到的是,许多抽样Java分析工具都使用一些底层APIs,这样能以更高的准确度分析程序运行状态,但是这也可能会导致程序受到损害。如果你使用的是一个高度优化的Java代码,那么你的程序可能会被这些工具拖慢甚至崩溃。
所有这些问题为什么这些工具都让开发者们烦恼不已。当然,这并不是说所有的抽样Java分析工具都是无用的。不过,如果你希望获得比较准确的数据,那么建议你还是使用更可靠的全量分析工具或者类似JVM Codegen的工具。
总而言之,在选择Java分析工具的时候,你应该对其性能和精度进行评估,而不是盲目地相信它们的抽样数据。
了解更多有趣的事情:https://blog.ds3783.com/