JavaFX映像加载内存泄漏?

JavaFX映像加载内存泄漏?,java,image,javafx,Java,Image,Javafx,我正在尝试为“手势绘制”构建一个应用程序,它基本上只是在设定的时间间隔内对图像进行幻灯片放映。我注意到,每当我加载一个小于1MB的新图像时,每当加载一个新图像时,我的应用程序的内存使用就会增加超过20MB 我尝试了两种方法,第一种是使用自定义的“ImagePane”(为了能够使用窗口调整图像大小),将给定图像加载到其样式表中(-fx background image),第二种是使用setImage()方法使用常规的ImageView。在这两种情况下,我都注意到记忆显著增强 现在我的问题是:这是正

我正在尝试为“手势绘制”构建一个应用程序,它基本上只是在设定的时间间隔内对图像进行幻灯片放映。我注意到,每当我加载一个小于1MB的新图像时,每当加载一个新图像时,我的应用程序的内存使用就会增加超过20MB

我尝试了两种方法,第一种是使用自定义的“ImagePane”(为了能够使用窗口调整图像大小),将给定图像加载到其样式表中(
-fx background image
),第二种是使用
setImage()
方法使用常规的ImageView。在这两种情况下,我都注意到记忆显著增强


现在我的问题是:这是正常的行为,是已知的内存泄漏还是我做错了什么?如果需要的话,我可以提供完整的代码,目前只是一个很大的原型混乱…

这是正常的行为。加载新图像时,每像素将消耗大约4个字节。只要您不意外地保留对不再使用的图像的引用,它们将以正常方式进行垃圾收集。您几乎无法控制垃圾收集器何时回收内存,您应该让JVM自行决定。

是否将映像文件大小与显示映像所需的内存进行比较?这些是完全不同的东西。我知道它们是,但我仍然不明白为什么每次加载800kb 2000x3000图像时,RAM使用量会增加超过20MB。2000x3000=600万像素。每个像素由4个字节表示(红色、绿色、蓝色和alpha各一个字节)。4字节x 600万像素=2400万字节。对我来说似乎有道理。是的,但为什么它一直在增加?因为你一直在加载更多的图像?我真的不明白你认为问题出在哪里。