【发布时间】:2009-07-01 18:38:52
【问题描述】:
我在 J2ME 应用程序中收到 OutOfMemoryException。
如何找到导致此错误的原因?以及如何防止出现此错误?
我发出一个 http 请求。当请求未完成时,屏幕会显示加载图像(就像浏览器在页面加载时显示的那样)。这是通过创建一个图像并重新绘制屏幕来完成的。
创建图像 1 -> 重绘 -> 创建图像 2-> 重绘-> 创建图像 3 -> 重绘 -> 创建图像 1-> 重绘 -> .
我注意到(使用 wtk 内存监视器)这消耗了太多没有被垃圾回收的内存。
然后我尝试创建一个类似于图像池的类。此类创建所有图像,然后显示它们。
创建图像 1 -> 创建图像 2-> 创建图像 3 -> 重绘 -> 重绘 -> 重绘 -> 重绘 -> 重绘 -> .
第二种情况消耗的内存似乎没有第一种情况多。 (使用 wtk 内存监视器)。
但是,我认为(不确定是否是这样)这两种方法都导致了这个OutOfMemoryException。
【问题讨论】:
-
你是在调试器中运行它吗?
-
我正在设备中运行。当我使用模拟器运行时,我没有收到此错误。
-
您使用的是什么 IDE(如果有)?它可能有一个分析器,您可以使用它来查找正在使用这么多内存的原因。
-
您使用的是什么设备?此设备上有多少内存可供 j2me 程序使用?
-
@Janusz 我使用的是诺基亚 2660。规格是 16MB 闪存 + 2MB RAM。