我有一个移动应用程序随着时间的推移速度变慢。我的预感,(部分由本文提供)是这是由于内存碎片减慢了应用程序的速度,但我不确定。这是应用程序的内存使用随时间变化的漂亮图表:
脆弱的岩石 http://kupio.com/image-dump/fragmented.png
图表上的 4 个峰值是应用程序上完全相同任务的 4 次执行。我开始任务,它分配了一堆内存,它坐了一会儿(顶部的平线),然后我停止了任务。此时它调用 System.gc(); 并且内存被清理。
可以看出,完全相同任务的 4 次运行中的每一次都需要更长的时间来执行。图中的低点都返回到相同的水平,因此任务运行之间似乎没有任何内存泄漏。
我想知道的是,内存碎片是一个可行的解释还是我应该先看看别处,记住我已经做了很多寻找?图表上的低点相对较低,所以我的假设是,在这种状态下,内存不会非常碎片化,因为不会有很多小的内存漏洞会导致问题。
我不知道 j2me 内存分配器是如何工作的,所以我真的不知道。任何人都可以建议吗?有没有其他人遇到过这个问题并识别出应用程序的内存配置文件?