ImageIcon加载越来越慢

时间:2011-04-17 16:54:21

标签: java image swing imageicon image-loading

在我的java GUI应用程序中,我有一些需要重复扩展的组件,我使用以下代码执行此操作:

Image newImage = myimage.getScaledInstance(width, height, Image.SCALE_REPLICATE);

ImageIcon newIcon = new ImageIcon(newImage);

this.setIcon(newIcon);

this.setSize(width,height);

//increment width, height

一开始这个工作正常,但经过多次迭代(几百次)后,新的ImageIcon()构造函数基于一些简单的时间检查花费了过多的时间(大约1秒)。其余的代码很快。

为什么在多次迭代后会发生这种情况,如何在迭代次数增加时使其停止减速? (在后台线程中加载图像将不起作用,因为加载图像不是恒定时间操作。)

2 个答案:

答案 0 :(得分:2)

看看The Perils of Image.getScaledInstance()。这可能不是问题,但在尝试替代方案之前你不会知道。

答案 1 :(得分:0)

我记得之前的Q / A是图像加载导致内存问题的地方。我认为你需要追求这是一个内存泄漏的理论:

  • 通过在启用GC日志记录的情况下运行JVM来确认这是问题,并查看日志消息与观察到的减速之间是否存在某种关联。 (以这种或那种方式确认需要一分钟左右。)

  • 使用您最喜爱的内存分析器尝试追踪泄漏。