JvisualVM中采样器和分析器之间的区别是什么?

Jas*_*son 22 java profiler visualvm jvisualvm

我发现JvisualVM中有两个插件,一个是采样器,另一个是探测器.

我还发现他们有类似的用户界面,但结果有很大差异,那么对他们来说有什么不同呢?

为什么他们有很大的不同?

Gho*_*ica 42

一般来说:

分析器一直在运行,因此它为您提供完整的调用堆栈; 在任何给定的时间点.

采样器仅在不同的时间点拍摄"快照".

事情是:当你"描述"所有东西时,那会大大减慢你的JVM; 它创造巨大的几秒钟内的数据.想一想:探查器会记下每个发生的方法调用!

通常,当您"不知道"应用程序中发生了什么时,您最初使用的是采样器.然后你只希望样品告诉你一些事情; 比如"嘿,在我们的10000个样本中,我们大部分时间都采用这种方法,为什么会这样?" 但是一旦你更好地理解了你正在寻找的东西,你就会尝试进行一个完整的分析器运行,以捕获导致某种方法的整个调用链.

然后有一些"中间立场" - 你在其中描述"一切"但排除的东西.换句话说:最剖析让你说"你不型材在这个或那个包类的方法".但是当然 - 排除包/层次结构只有在你已经非常好地感觉到你打算调查哪个方向时才有意义.