视觉vm中的采样

Ele*_*eco 9 java performance

任何人都可以解释visualvm采样功能背后的科学吗?

我原以为收集每个特定方法花费的CPU数量需要对应用程序进行分析,但看起来并不像visualvm正在做任何类型的工具,所以我很想知道它是如何完成的......

Noe*_*din 11

它有一个计时器.当计时器触发时,它会复制每个线程堆栈的当前内容.然后,它将堆栈帧转换为方法和对象名称,并根据相对方法记录计数.

因此,它不需要检测代码,因此非常轻量级.但是,因为它没有检测代码,所以可能会错过短期运行的东西.因此,它对于跟踪长时间运行的性能问题或快速识别代码中的严重热点非常有用.


Pas*_*ent 8

看起来新的VisualVM-Sampler插件通过定期轮询受监视的应用程序以获取线程转储或内存直方图来收集性能和内存数据.查看此文章了解更多详细信息.

  • 不确定VisualVM,但我认为对调用堆栈进行采样通常是最常见的分析方法,除非由于某种原因你真的需要关于非常具体方法的准确时序. (2认同)