1

私は小さなAndroidゲームを書いています。最初に実行したときはいつでもすべてうまくいきましたが、ランダムにハングし、EclipseのLogCatでこれを際限なくスパムし始めます

12-30 12:40:05.344: D/dalvikvm(22831): WAIT_FOR_CONCURRENT_GC がブロックされました 5 ミリ秒 12-30 12:40:05.383: D/dalvikvm(22831): GC_CONCURRENT が解放されました、合計14ms

ガベージコレクションと関係があることは知っていますが、アプリを強制停止するたびに(アプリを閉じる唯一の方法です)、デバイスを再起動するまで、使用可能なRAMが約5〜10MB失われます。これが何を意味し、それを防ぐ方法を知っている人はいますか?

私が使用しているデバイスは、android 4.2.1(Cyanogenmod 10.1) および 3.2(api レベル 13) の sdk/target バージョンを実行している Verizon Galaxy nexus です。ありがとう!

4

2 に答える 2

0

これがまさにあなたが探しているものかどうかはわかりませんが、エラーを検索すると最初に表示されます-WAIT_FOR_CONCURRENT_GCがブロックされたということはどういう意味ですか? . また、 3.2をターゲットにする理由はほとんどありません。

于 2012-12-30T17:56:05.177 に答える
0

Google で検索すると、より詳細な説明が得られますが、基本的には、ガベージ コレクターを非常にハードに動作させていることを意味します。

ゲームのプログラミングは、「通常の」アプリのプログラミングとは異なります。ゲームは、おそらく数え切れないほどループします。この結果、わずかなメモリ リークでさえ、すぐに実際の問題に発展する可能性があります。

さらに、GC は通常、あなたの最大の友ですが、ゲームではほぼ敵の 1 つです。GC を実行するたびに、「世界が停止する」ため、少しフリーズします。

特定のゲーム プログラミング チュートリアルと、それらの中で GC に対抗する方法を引き続き検索することをお勧めします。

于 2012-12-30T18:04:29.313 に答える