私はAndroid> = 2.1のリアルタイムアーケードゲームを書いています。ゲームプレイ中に私はGCを誘惑しないためにメモリを割り当てません。 GCが起動すると、Beacuseは70〜200msの間プロセッサを使用します。ユーザーはこれをと表示します。「ああ、そのゲームは遅れています...」。他のプロセスは私のゲームを遅くするGCを呼び出します
LogCatをチェックしました。 GC_FOR_MALLOCまたはGC_EXPLICITがたくさんあります。しかし...私のプロセスのPIDからではありません!私のゲームはそれらを引き起こしていません。それらはバックグラウンドで実行されている他のプロセスによって引き起こされます。いくつかの壁紙、ウィジェット、ラジオ、電子メール、天気検査などのサービス...
私はそれを完全に理解していません。たとえば、壁紙が消えてonPause()が呼び出されると、私は思います。だから、すべてのスレッドを停止し、確実にメモリを割り当てないでください(またはSystem.gc()を呼び出してください)。多分それは間違って実装されていますか?知りません。しかし、時にはGCを引き起こしているAndroidサービスもあります...それは奇妙です。
大きなAndroidですか?< = 2.2アーキテクチャの欠陥ですか? Android 2.3 introduces並行GCです。時間がかかりません。
私のゲームがスムーズに動作するようにするにはどうすればよいですか?
なぜあなたは信じられないのですか?はい、私は2.2と4.1でそれをテストしました。 2.2の動作は、私が説明したようなものです。 4.1では、私が言及したように、この問題をあまり厳しくしない同時GCがあります。 –