使用JVMTI提供的MethodEntry和MethodExit事件挂钩,如何测量在Java中执行的方法的时间?

时间:2013-06-05 10:21:15

标签: execution-time jvmti

我看到了你的下面的话题。 我也试图做类似的事情但不确定哪个api会给出最好的结果: 你可以建议你使用哪一个吗?

使用JVMTI提供的MethodEntry和MethodExit事件挂钩如何测量在Java中执行的方法的时间?

简单来说就是:time2 - time1但我看到的问题,如何区分不同的方法?有一个methodID,但递归调用呢?方法在打开后何时关闭?

我应该比较堆栈跟踪吗?什么是有意义的数据结构来跟踪输入的方法?像Map这样的东西?

1 个答案:

答案 0 :(得分:2)

使用MethodEntry和MethodExit事件来记录方法时序可能不是一个很好的策略,因为使用这些事件将严重中断时间。你可能希望所有方法的解析都是平等的,你仍然可以得到相对的时间,但我不确定是不是这样。

更好的策略是使用字节码检测来跟踪这些事件。