在我的Java GUI應用程序,我有一個需要反覆規模某些組件,而我用下面的代碼這樣做:的ImageIcon加載越來越慢
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秒)。其餘的代碼很快。
爲什麼在多次迭代後會發生這種情況,並且如何隨着迭代次數的增加而停止減速? (在後臺線程中加載圖像不起作用,因爲加載圖像不是一個常量操作)。
你是否抓住舊圖像,以便它們不能被垃圾收集? – MeBigFatGuy 2011-04-17 17:06:57
我不這麼認爲,因爲setIcon(newIcon)應該推出只存在於內部的舊圖標。但似乎有某種內存泄漏,因爲程序使用了過多的RAM。 – donnyton 2011-04-17 19:02:16