谁能解释 visualvm 的采样功能背后的科学原理? ?
我原以为收集在每个特定方法上花费的 CPU 数量需要对要分析的应用程序进行检测,但看起来 visualvm 没有进行任何类型的检测,所以我很想知道它是如何完成的...
最佳答案
它有一个计时器。 当计时器触发时,它会复制每个线程堆栈的当前内容。 然后它将堆栈帧翻译成方法和对象名称,并记录相对方法的计数。
正因为如此,它不需要检测代码,因此非常轻量级。 但是,因为它没有检测代码,所以可能会错过短期运行的东西。 因此,它主要用于跟踪长期运行的性能问题,或快速识别代码中的严重热点。
关于java - 视觉虚拟机中的采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1831349/