1

ゲームをテストしていて、問題が発生しました。私のメインのゲーム クラスは、ユーザーが死亡したときに (アプリケーション全体ではなく) 再起動しますが、再起動するたびに、実行速度がどんどん遅くなります。メモリリークの可能性を考えています。

setScreen(Screen sc) メソッドを使用して、画面から画面に切り替えています。dispose() メソッドでクリーンアップも行っていますが、理由がわかりません。

ですから、再起動時にアプリの速度が低下する原因を教えてください。

ループで大量のシェイプをレンダリングしているので、それは ShapeRenderer かもしれません。それが問題なのでしょうか? しかし、メイン ゲーム クラスの新しいインスタンスを呼び出すまで、アプリは完璧に動作します。

投稿するにはコードが多すぎるため、膨大な量のテキストで申し訳ありません。何が間違っているのか、どうにかして教えていただければ幸いです。

4

3 に答える 3

4

あなたを助けるかもしれない何か。jmap ( http://docs.oracle.com/javase/7/docs/technotes/tools/share/jmap.html ) を使用します。jmap は、jvm が現在保持しているオブジェクトのインスタンスを表示します。ゲームの実行可能な jar を作成し、ゲームを開始し、jmap をチェックし、少し死んでから、jmap を再度チェックするだけです。Texture-Objects の増加が見られるため、それらの一部をクリーンアップしていない可能性があります (AssetManager を使用している場合、一部を忘れがちです)。

于 2013-08-28T11:20:32.910 に答える
4

ScoreScreenを見ると、ロードしたテクスチャを破棄していないことがわかります。

今後これを回避するために、アセット マネージャーのチュートリアルと libgdx のガイドを確認することを強くお勧めします。

編集:

補足として、あなたのコードはまったく悪くないので、恥ずかしがらないでください。実際、私は平均よりも優れていると思います:)。

于 2013-08-28T15:23:27.500 に答える
1

メモリ割り当てを追跡するツールを使用することは、コード レビューよりもはるかに役立ちます。

Eclipse DDMS メモリ トラッカーを使用します: http://developer.android.com/tools/debugging/ddms.html#alloc

于 2013-08-28T15:06:01.090 に答える