時間の経過とともに速度が低下するモバイル アプリケーションがあります。私の推測では (この記事の一部を参考にしています)、これはメモリの断片化が原因でアプリの速度が低下しているということですが、よくわかりません。これは、時間の経過に伴うアプリのメモリ使用量のきれいなグラフです。
フラグルロック http://kupio.com/image-dump/fragmented.png
グラフの 4 つのピークは、アプリでまったく同じタスクを 4 回実行したことを示しています。タスクを開始すると、大量のメモリが割り当てられ、しばらく待機してから (上の平らな線)、タスクを停止します。その時点で System.gc(); を呼び出します。そしてメモリがクリーンアップされます。
ご覧のとおり、まったく同じタスクを 4 回実行すると、実行に時間がかかります。グラフの最低点はすべて同じレベルに戻るため、タスク実行間のメモリ リークはないようです。
私が知りたいのは、メモリの断片化は実行可能な説明ですか、それとも、すでに多くのことを調べたことを念頭に置いて、最初に他の場所を探すべきですか? グラフの最低点は比較的低いため、この状態では、問題の原因となる小さなメモリ ホールが多数存在することはあり得ないため、メモリがあまり断片化されていないと推測されます。
ただし、j2me メモリ アロケータがどのように機能するかはわかりません。誰でもアドバイスできますか?他の誰かがこれに問題を抱えていて、アプリのメモリ プロファイルを認識していますか?