我分析了一个用例的cpu使用情况,并查看了调用树中最大的调用时间贡献者。在那里我偶然发现了一种自我时间很高的方法。请看这里:
我检查了这个方法,发现下面的代码
@Override
public IArticleDataProvider getArticleDataProvider() {
return new ArticleDataProvider();
}
该方法除了示例化之外,不做其他事情。调用树显示,示例化本身并不慢——没有黑魔法——那么我如何理解117ms的延迟呢?我重新运行我的用法,第二次是在预期的微秒之内。而且不再需要它了,这是有道理的。我知道单样本并不是一个很好的性能基准,只是更深入潜水的一个起点,但这是不是在分析的时候可以预期的呢?至少它在异常点检测中大喊了一声。这听起来不仅仅是jvm预热问题,对吧?这里还有更多的因素需要考虑吗?
这是我第一个使用java评测的真实案例。我之前参加过几次关于java评测的讨论,并阅读了一些指南。我很感谢所有的反馈
1条答案
按热度按时间2admgd591#
它看起来只是类加载所需的时间。该时间不包括在节点中,后者只是静态初始值设定项的调用。