JavaME - LWUIT图像占用了所有内存

6 lwuit midlet java-me

我正在使用LWUIT编写一个MIDlet,图像似乎占用了大量的内存.我使用的所有图像都是PNG,并打包在JAR文件中.我使用标准的Image.createImage(URL)方法加载它们.应用程序有许多表单,每个表单都有一些标签和按钮,但我相当确定只有活动表单保存在内存中(我知道它不是很值得信赖,但Runtime.freeMemory()似乎确认这个).

该应用程序在240x320分辨率下运行良好,但将其移至480x640并使用适当大的UI图像开始导致内存不足错误显示.除其他外,应用程序的功能是下载远程图像.该应用程序似乎工作正常,直到它到达这一点.下载几个PNG并返回主菜单后,遇到内存不足错误.当然,我查看了主菜单使用的内存量,这非常令人震惊.这只是带有图像和四个按钮的两个标签.每个按钮都有三个用于style.setIcon,setPressedIcon和setRolloverIcon的图像.图像的大小范围为15到25KB,但删除了每个按钮使用的三个图像中的两个(总共8个图像),Runtime.freeMemory()显示内存使用量减少了1MB.

我看到它的方式,我要么有很多内存泄漏(我不认为我这样做,但内存泄漏并不是很容易被人追踪),我正在做一些非常错误的图像处理或真的没有问题,我只需缩小规模.

如果有人有任何提供的见解,我将不胜感激.

Kar*_*pka 0

您是否想到过这样一个事实:可能多次从 JAR 加载相同的图像会导致创建许多单独的图像对象(具有相同的内容),而不是为每个图像重用一个实例?这是我的第一个猜测。