gpt4 book ai didi

java-me - JavaME - LWUIT 图像耗尽所有内存

转载 作者:行者123 更新时间:2023-12-02 08:23:07 28 4
gpt4 key购买 nike

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

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

在我看来,我要么有很多内存泄漏(我认为我没有这样做,但内存泄漏并不完全已知可以轻易追踪),我正在做一些非常错误的事情图像处理或者确实没有问题,我只需要缩小规模。

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

最佳答案

移动设备的内存通常非常低。所以你必须使用一些技巧来节省和使用内存。

我们在一个项目中遇到了同样的问题,我们是这样解决的。

对于下载的图像:在放置图像的地方创建一个缓存。如果您需要图像,请检查它是否在缓存映射中,如果没有,请下载并将其放在那里,如果是,请使用它。如果内存已满,请删除缓存映射中最旧的图像,然后重试。

对于其他资源图片:只要您能看到它们,就将它们保留在内存中,如果您看不到它们,请中断引用,gc 将为您进行清理。

希望这有帮助。

关于java-me - JavaME - LWUIT 图像耗尽所有内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1390087/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com