2011-07-04 3 views
1

GCに期限を設定する方法はありますか?GCの時間制限を設定する/イベントの割り当てを削除する

私は、各イベントにいくつかの浮動小数点、整数、ロングを割り当てるゲームを書いていますので、GCを短時間(5〜20ms)コールしてそれらを削除することをお勧めします。次に、各ゲームループでGCを呼び出します。この方法は私の個人的なお気に入りです。私はまだ多くの努力を払わずにバックトレースすることはできません(私はすでにほとんどのものを削除しています)。

代わりに、私は他の割り当てを探して何らかの形でそれを防ぐだろうが、イベントでの割り当てを防ぐ方法が必要だ。ここで

は、必要に応じて割り当てトラッカーの結果です: http://textsave.de/?p=67220

編集:私は本当に割り当てトラッカーで何かを見つけることができません 、すべてのオブジェクトは、これまでのjava-内部クラスオフ(でも痕跡のあるからです)。また、ガベージコレクタがfloat []を複数のオブジェクトとしてカウントしない限り、示されたオブジェクトは収集される数値の近くにありません。

誰でもこの問題がありますか?

答えて

1

GCに期限を設定する方法はありますか?

いいえ、しかし、すでにかなり短いです。私は、各イベント

それをしないでくださいにいくつかの山車、int型とlong型を割り当て、ゲームを書いているので、私は聞いてるのよ

。あなたの記憶をあらかじめ割り当てる。

と私はむしろGCを短時間(5〜20ms)呼び出して削除したいと考えています。次に、各ゲームループでGCを呼び出します。

System.gc()に電話をかけても構いませんが、実行時間を制御することはできません。これは、通常、数十ミリ秒のオーダである。しかし、自分のオブジェクトプールを維持することによって、最初の割り当てを避けることでより効果的です。

+0

どうすればよいですか?私が編集できないコードで作成されたオブジェクトのメモリを事前に割り当てますか?私はグーグルを見てきましたが、私は間違って検索する必要があります。 – SBoss

+0

@SBoss: "編集できないコードで作成されたオブジェクトのメモリを事前に割り当てますか?"可能であれば、オブジェクト自体を事前に割り当てます。または、このコードをゲームで使用しないでください。従来のAndroidアプリケーションに適したプログラミング手法は、必ずしもゲーム開発には適していません。また、新しいAndroid搭載端末では、バックグラウンドスレッドでガベージコレクションが並行して行われるため、「世界を止める」ことはできません。 – CommonsWare

+0

私のターゲットプラットフォームは2.1+ですので、選択できません。あなたはタッチイベントを読むための別の方法を知っていますか?どうにかしてonTouch(View、MotionEvent)コールはかなりのものを割り当てます。だから、私が今までに見たすべてのオブジェクトは、コードの背後に作成されています。私はそれが本当に私だけでないかどうかを調べようとし続けます。 – SBoss

関連する問題