我正在尝试构建一个“手势绘图”应用程序,它基本上只是按设定间隔播放图像的幻灯片。我注意到,每当我加载小于 1MB 的新图像时,每次加载新图像时,我的应用程序的内存使用量都会增加超过 20MB。
我尝试了两种方法,第一种是使用自定义“ImagePane” - 为了能够使用窗口调整图像大小 - 将给定图像加载到其样式表 (-fx-background-image
) 中,第二种方法是使用使用 setImage()
方法的常规 ImageView。在这两种情况下,我都注意到内存显着增加。
现在我的问题是:这是正常行为、已知的内存泄漏还是我做错了什么?如果需要的话,我可以提供整个代码,但目前这只是一个很大的原型(prototype)困惑......
最佳答案
这是正常行为。当您加载新图像时,每个像素将消耗大约 4 个字节。只要您不意外地保留对不再使用的图像的引用,它们就会有资格以正常方式进行垃圾收集。您几乎无法控制垃圾收集器何时回收内存,您应该将其留给 JVM。
关于JavaFX图像加载内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39573550/