LWUIT- JavaME中的内存不足异常

时间:2011-10-17 06:53:35

标签: java-me lwuit out-of-memory

我正在使用Netbeans IDE在Java ME中开发一个应用程序,我正在创建3个表单,其中包含ButtonCommand(正常和返回)和Image在第一个{ {1}}。

使用确定Form我可以将控件转移到第二个表单。这工作

在第二个Command我有2个Form确定并返回。点击OK,它应该转到第3 Command。点击后退它应该返回到第一个Form

当我在第二个Form时,我既不能转移到第三个也不能转移到第一个Form

我收到以下异常.............

Form

(堆栈跟踪不完整) 转换绘制期间发生异常,这可能在转换过程中调整大小时有效

请帮帮我。 提前致谢

4 个答案:

答案 0 :(得分:1)

Sanjay的答案是正确的但是如果它没有解决问题,我猜你会在你的代码中的某处导致堆栈溢出。许多J2ME VM无法触发堆栈溢出异常,而是引发内存不足错误。

只需使用调试器并遍历代码即可查看递归。

答案 1 :(得分:0)

使用您提供的信息,可能的问题是第一种形式的图像,您需要跟踪您正在使用的图像的大小。加载图像时,数据被解压缩为像素阵列。像素可能需要2到4个字节,具体取决于设备。一个800x600图像有480,000像素,因此需要至少1Mb的堆(可能高达2Mb)来加载它。这将解释为什么你的内存不足。在转换过程中,它可能是LWUIT使图像的本地副本“转换”(重绘)它(虽然我不确定)所以如果在转换时需要更多内存,这并不奇怪。

以下是一本可以帮助您的好读物:Memory Leaks In LWUIT And Tracking Memory In Java ME

答案 2 :(得分:0)

您可以扩展模拟器的内存。您必须单击项目的属性/平台/管理模拟器/工具&扩展/打开首选项/存储 在这个窗口中你会看到堆大小,写在这里1000 f.e.并再试一次。

答案 3 :(得分:-1)

当您切换到该等级的第2或第3对象时显示对象(来自mdilet)与下一个表单构造函数,当你回调按钮时,只需编写一行代码,如display.setCurrent(previous_form_object);&当你点击ok命令时,你知道如何进入下一个表单。还有一件事是Sanjay提到的。

由于