如何理解和优化工厂方法的高自时间

How to understand and optimize high self time of a factory method

我分析了一个用例的 cpu 用法,并调查了调用树中最大的调用时间贡献者。在那里我偶然发现了一种自我时间相当长的方法。看这里:

查了下方法,发现如下代码

    @Override
    public IArticleDataProvider getArticleDataProvider() {
        return new ArticleDataProvider();
    }

该方法只做实例化。调用树显示,实例化本身并不慢——没有黑魔法——那么我如何理解这 117 毫秒的延迟?我重新运行我的使用,第二次是在预期的微秒内。也不再需要 clinit,这是有道理的。 我知道单个样本不是性能的良好基准,只是更深入潜水的起点,但这是在分析时可以预期的吗?至少它在异常值检测中大喊大叫。 这听起来不仅仅是一个 jvm 预热问题,对吧? 这里还有更多的因素需要考虑吗?

这是我使用 java 分析的第一个真实案例。我参加过几次关于 java 概要分析的讨论,并事先阅读了一些指南。感谢所有反馈

看起来很像 class 加载所需的时间。那个时候不计入节点,后面只是静态初始化器的调用。