我正在使用YourKit和JProfiler中的采样性能分析功能来分析程序,并且还“手动”(我启动它并按Ctrl-Break几次以获取线程转储)。奇怪的性能分析结果:绝对不会出现瓶颈方法
这三种方法都给我带来了极其奇怪的结果:在3线方法中花费了几十个百分点的时间,即使不进行任何分配或同步也没有循环等。这个方法变成了一个NOP,甚至完全删除了它的调用,可观察的程序性能根本没有改变(虽然它获得了可忽略的内存泄漏,因为它是一种释放廉价资源的方法)。
我在想,这可能是因为JVM放在线程的堆栈跟踪时刻的约束,而且它在某种程度上证明了在我的程序中它恰好是调用此方法的时刻尽管对它或者它所调用的上下文没有特别的要求。
什么可以解释这种现象? 上述约束是什么? 我可以采取哪些进一步措施来澄清情况?
你能发布具体信息吗? – 2010-05-07 12:52:05
@Jeff哪些? – jkff 2010-05-07 12:59:20
也许探查器结果的快照开始 – 2010-05-07 13:12:43