1
我有一個基本上是Image Gallery的JavaFX應用程序(Swing用戶輸入也可能有所幫助)。它觀看一個文件夾,一旦添加了任何圖像,圖像就會顯示在屏幕上。顯示圖像時內存消耗增加50 MB
隨着越來越多的圖片被添加,應用程序的內存消耗只會越來越大。在剖析時,我觀察到在添加圖像(大小1.3 MB)時,內存消耗增加了約50 MB。持有Image的類是一個簡單的ImageView
,它包含一個Image
。 有沒有人有類似的經歷?在Windows上的行爲是相同的& Mac
PS:我知道這裏的任何代碼都會有幫助,但沒有什麼需要顯示的。正如我所說,有一個ImageView列表包含Image。 ImageView的列表綁定到另一個List
說l1
。在檢測的圖像時,圖像被添加到l1
等被添加到其被顯示在屏幕上
EDIT實際列表:
我只嘗試了示例代碼。我觀察到,每Iamge它負載(2.3 MB在這種情況下)上,存在的每12 MB存儲器增加:
package side;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import javafx.application.Application;
import javafx.geometry.Orientation;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ScrollBar;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class Test extends Application {
public static void main(String... args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
ScrollBar bar = new ScrollBar();
bar.setOrientation(Orientation.VERTICAL);
final VBox box = new VBox();
Group root = new Group();
root.getChildren().addAll(box, bar);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.setTitle("Layout Sample");
primaryStage.show();
for (int ik = 0; ik < 6; ik++) {
System.out.println("1");
ImageView i = new ImageView();
InputStream is = new FileInputStream(new File("C:\\Users\\Jatin\\Documents\\BarcodeNew\\w.png"));
Image im = new Image(is);
i.setImage(im);
box.getChildren().add(i);
is.close();
}
//r.close();
}
}
如果您僅使用縮略圖進行顯示,則無需將圖像保存爲全分辨率,而是縮小版本。 – 2013-02-15 06:18:40
是的。我會做。但是,對於一個1.3MB大小的圖形來說,爲什麼這麼大增加呢? – Jatin 2013-02-15 06:20:39
檢查你的代碼是否有內存泄漏,分析器會在這裏幫助。 – 2013-02-15 06:27:16