【问题标题】:JProfiler does not show all callsJProfiler 不显示所有调用
【发布时间】:2020-08-31 18:57:15
【问题描述】:

我正在尝试分析 gif 的写作,但自拍时间不加起来。所以我不知道发生了什么。

编辑:添加有问题的格式化方法

private final ImageWriter gifWriter;

   void writeToSequence(RenderedImage img) throws IOException
   {
      gifWriter.writeToSequence(
            new IIOImage(
                  img,
                  null,
                  imageMetaData),
            imageWriteParam);
   }

编辑 2:使用 javax.imageio 进行分析

【问题讨论】:

    标签: java jprofiler


    【解决方案1】:

    自己的时间不加起来

    调用树显示总次数。自时间是总时间与所有子节点总和之间的差。您可以在视图设置中打开额外的自拍时间显示。

    在您的情况下,大部分时间直接花在GifSequenceWriter.writeToSequence 方法上。

    与本例相关的另一个主题是 JProfiler 具有调用树过滤器的概念。如果一个类是未分析的并且仍然显示在树中(因为它是由分析的类直接调用还是因为它位于树的顶层),由于调用了其他未分析的方法,它可能有很大的自身时间。您的GifSequenceWriter 类不是这种情况,但它下面的GifImageWriter 类是这种情况。您可以通过方法图标左上角的红色角来识别未分析的类。

    【讨论】:

    • 感谢您的回答。我在上面添加了有问题的方法。根据您的回答,我猜想创建 IIOImage 需要很长时间,但它不会出现在调用树中。有没有办法分析 IIOImage 以及
    • 我以单独的方法移动了 IIOImages 的创建,以便 JProfile 可以获取它。它需要约 100 毫秒,还有约 18,000 毫秒留给 GifSequenceWriter.writeToSequence。我不明白。
    • 您能否再次将javax.imageio. 添加为调用树过滤器和配置文件中的包含过滤器?
    • 好的,一定是“com.sun.imageio”。实现图像编写器的包。 “com.sun。”在 JProfiler 中以一种特殊的方式过滤包。尝试添加“com.sun.imageio”。也可以作为包容性过滤器。
    猜你喜欢
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 2012-05-10
    相关资源
    最近更新 更多