javaFx中的内存使用

javaFx中的内存使用,java,javafx,Java,Javafx,我创建了一个ScrollPane,它有一个StackPane,作为一个2000像素大小的孩子,现在我用这幅图像的一些片段填充我的StackPane: 我使用此代码将所有图像添加到stackPane ImageView grass = new ImageView(Url.GRASS); double x = grass.getImage().getWidth(); double y = grass.getImage().getHeight();

我创建了一个
ScrollPane
,它有一个
StackPane
,作为一个2000像素大小的孩子,现在我用这幅图像的一些片段填充我的
StackPane

我使用此代码将所有图像添加到stackPane

 ImageView grass = new ImageView(Url.GRASS);
        double x = grass.getImage().getWidth();
        double y = grass.getImage().getHeight();
        for(int i=0 ; i < 2000/x ;i++){
            for(int j = 0;j<2000/y;j++){
                ImageView grassTemp = new ImageView(Url.GRASS);
                myStackPane.getChildren().add(grassTemp);
                grassTemp.setTranslateX(-2000/2+(x)*i);
                grassTemp.setTranslateY(-2000/2+(y)*j);

                grassTemp.setCache(true);
                grassTemp.setCacheHint(CacheHint.SPEED);
            }
        }
还有所有的图片

 grassTemp.setCache(true);
 grassTemp.setCacheHint(CacheHint.SPEED);
但我发现它只减少了大约4-6MB的内存使用

现在,您认为在加载大量图像时有更好的性能和更好的内存使用率是什么? 提前谢谢


注意:我想使用这些图像为我的小游戏创建一个小地图

您所有的图像视图都是相同的图像。您不需要加载新的映像数据,只需复制映像即可

而不是:

ImageView grassTemp = new ImageView(Url.GRASS)
做:

您可能应该只使用标准窗格或组,并在图像视图上设置布局值(或使用网格窗格),而不是使用带转换的StackPane


此外,作为一种替代方法,您可以使用CSS背景,并重复执行此任务。

请发布一个.Ok。但哪一部分不清楚?什么是
image
,创建了多少图像,如何使用imageview,为什么会涉及堆栈窗格,为什么要将117个图像放在堆栈窗格中,因为它们只会堆叠在彼此的顶部,并且您将只看到顶部1个图像,等等。我创建一个stackpane是因为,事实上,我想创建一个简单的游戏,它有一个地面和一些他们在我的地面上移动的对象(上图中的这个图像用于创建我的地面),因为我使用了stackpane,我将这个stackpane添加到一个滚动条中,以简单地滚动地图
ImageView grassTemp = new ImageView(Url.GRASS)
Image grassImage = new Image(Url.GRASS) // **outside the loops
. . .     
ImageView grassTemp = new ImageView(grassImage) // **inside the loops.