java - 视觉虚拟机中的采样

标签 java performance

谁能解释 visualvm 的采样功能背后的科学原理? ?

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

最佳答案

它有一个计时器。 当计时器触发时,它会复制每个线程堆栈的当前内容。 然后它将堆栈帧翻译成方法和对象名称,并记录相对方法的计数。

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

关于java - 视觉虚拟机中的采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1831349/

相关文章:

java - Spring 3.2 - 切换到 JavaConfig 后无法解析 View 名称

java - android HttpClient 加载许多小缩略图

java - 使用 list() hibernate 获取特定列

c++ - 如何剖析 OpenMP 瓶颈

Angular 4 单元测试(TestBed)非常慢

java - 如何在 JSP 页面中检索并显示数据库中的图像?

java - 否则,如果在未选中单选按钮时循环不停止,则下一个 Activity 无论如何都会打开

linux - 10G Linux VPN 性能

java - 在 Java 中,如何高效地将数据从 String 复制到 char[]/byte[]?

c# - 来自 C# 的 native 调用的最佳实践