我在J2ME应用程序中得到OutOfMemoryException
。
我如何找到导致此错误的原因?以及如何防止出现此错误?
我发出一个http请求。请求未完成时,屏幕上会显示一个加载图像(就像浏览器在加载页面时显示的一样)。这是通过创建图像并重新粉刷屏幕来完成的。
创建图像1->重新绘制->创建图像2->重新绘制->创建图像3->重新绘制->创建图像1->重新绘制->。
我注意到(使用wtk内存监视器),这消耗了太多的内存,这些内存没有被垃圾回收。
然后,我尝试创建一个类,该类是图像池。此类创建所有图像,然后显示它们。
创建图像1->创建图像2->创建图像3->重新绘制->重新绘制->重新绘制->重新绘制->重新绘制->
第二种情况似乎没有消耗比第一种情况更多的内存。 (使用wtk内存监视器)。
但是,我认为(不确定是否是这样)这两种方法都导致了此OutOfMemoryException
。
最佳答案
错误的原因是内存不足。不好意思,但你问了:-)
为了诊断确切的问题,将需要一些源代码。
您还应该在代码中查找进行递归方法调用或在循环内分配内存的部分。递归调用通常会生成StackOverflowException,但值得一看。但是,在循环内分配内存可能很快导致OutOfMemoryError。
关于java - j2me应用程序中的OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1070675/