我正在尝试为“手势绘图”构建一个应用程序,它基本上只是设置间隔中的图像幻灯片。我注意到,每当我加载一个小于1MB的新图像时,每次加载新图像时,我的应用程序的内存使用量都会增加20MB以上。
我尝试了两种方法,第一种方法是使用自定义“ImagePane” - 为了能够使用窗口调整图像大小 - 在样式表中加载给定图像(-fx-background-image
) ,第二个是使用setImage()
方法使用常规ImageView。在这两种情况下,我都注意到了显着的内存增加。
现在我的问题是:这是正常的行为,已知的内存泄漏还是我做错了什么?如果有必要的话,我可以提供整个代码,但现在它只是一个很大的原型混乱...
答案 0 :(得分:0)
这是正常行为。加载新图像时,每个像素将占用大约4个字节。只要您不小心保留对不再使用的图像的引用,它们就有资格以正常方式进行垃圾回收。您几乎无法控制垃圾回收器何时回收内存,您应该将其留给JVM。