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