我正在 j2me 中开发一个移动应用程序。
我的应用程序执行以下操作
- 我用蓝牙将手机与一些外部设备连接起来
- 通过蓝牙将数据/命令发送到该设备
- 接收来自该设备的响应
我的问题是设备返回的数据最多为 1000KB。所以我的应用程序抛出“内存不足”异常。
请帮我解决问题。
我正在 j2me 中开发一个移动应用程序。
我的应用程序执行以下操作
我的问题是设备返回的数据最多为 1000KB。所以我的应用程序抛出“内存不足”异常。
请帮我解决问题。
背后的原因是微不足道的,您的设备中没有 1MB 的片上内存。所以试着把你的数据分成几块。
无论 J2ME 设备上的物理空间大小如何,它的内存占用量通常会在 64 到 512kb 之间变化。我认为 J2ME 的最大值实际上是 512kb。虽然我可能是错的,但我会调查一下。这是一个常见的困惑,我曾经在 Jamdat Mobile 的 J2ME 测试期间一直面临这个问题。许多摩托罗拉 V 系列设备因抛出此错误而臭名昭著。
查看您使用的设备上的 KVM 实现,以确定真正的内存占用量是多少。
您可能会发现这很有帮助:http: //java.sun.com/products/cldc/wp/KVMwp.pdf
如何将数据存储在临时文件中,这样您就不需要将所有数据都保存在内存中?您也可以增加内存分配,但有一天如果用户发送更大的文件,您将再次遇到同样的问题。
请注意,较旧的 J2ME 实现使用非碎片整理内存管理器。当我制作游戏时,我们必须明确地安排我们的分配。
你必须通过这个来增加你的操作系统内存。http://blogs.oracle.com/fkieviet/entry/classloader_leaks_the_dreaded_java