【发布时间】:2016-06-26 13:58:44
【问题描述】:
我正在使用java 制作一个简单的图片查看器,使用javafx
打开大约10张照片后,它需要大量的内存!
显然我需要正确关闭打开的图片(现在没有显示!)(在我的测试/用例中,图片很大!)
这只是代码的一部分...
但这是需要知道的一切
private HashMap<Image, String> adrs; // a hashMap from thumbNail to address of the image
ObservableList<ImageView> list; // list of thumbNails
@FXML public ListView<ImageView> pics;
@FXML public ImageView preview;
public void init(String[] picAdrs){
loadThumbNails(picAdrs); // initializes thumbNails (list)
pics.setItems(list);
pics.getSelectionModel().selectedItemProperty().addListener((v, oldvalue, newvalue) -> {
// --> this is where the previous value of "preview.getImage()" should be closed <--
// (and i don't know how!)
preview.setImage( new Image(adrs.get(newvalue.getImage()));
// and more (not related codes...)
}
}
private void loadThumbNails(String[] picAdrs){
// initializing list & adrs
for(String i : picAdrs){
Image img = new Image(new File(i).toURI().toString(), 200, 0, true, false);
ImageView iv = new ImageView();
iv.setImage(img);
adrs.put(img, new File(i).toURI().toString());
list.add(iv);
}
}
thumbNails 在左侧,“预览”在右侧:
Just a preview of the Scene
因为它看起来很简单! ... 一个简单的方法将不胜感激!
顺便说一句...代码有效,它只是关于我评论的部分
我使用垃圾收集器减少了大约 50% 的内存使用,但 我仍然想要更好的方法,因为我知道 system.gc 不可靠
【问题讨论】:
-
请贴出负责加载图片的代码,并描述用户如何在不同图片之间切换。
-
@Collins.A 这篇文章是关于删除...已经阅读过...反正 tnx
-
@fabian 代码和添加的屏幕截图...用户可以通过从 thumbNails 中选择缩略图来预览图片(“图片”有一个监听器)
-
你用过vusualVM或类似的东西吗?如果不是...内存可能可用于垃圾收集,即使它实际上并没有被释放...