2012-01-22 8 views
0

私は、メモリ使用量が急激に変化しているのは普通ですか?メモリ使用量が非常に速く変化しますが、それは正常ですか?

私はこれを実行しますcodeチュートリアル「簡単なゲームを作る方法」です。

私はゲームのメインループの中でいくつかのコードを追加します。それが起こるいる理由

g.setColor(Color.cyan); 
g.drawString(System.currentTimeMillis() + "\n\n/nRAM:[" + (runtime.totalMemory() - runtime.freeMemory())/1024/1024 + " MB]", 100, 100); 

RAMの使用量がそれほどに25-30との間で非常に高速に変化して、

私の質問はありますか?それは間違った行動ですか、それとも重要ではありませんか?コードが間違って書かれていますか?

EDIT: Imが疑わしいこのvideoメモリ使用量の例えば安定して、しかもbrackeenゲームは音停止の演奏まで、同じ使用(25メガバイト)を持っているので。

+1

コンピュータは非常に高速です。長い間上向きの傾向がない限り、心配しないでください。 –

+0

いいえ間違っていません。大規模な増加は、残っていないと常にアップして間違っている可能性があります。 –

答えて

3

Javaでは、ガベージコレクタによってメモリ管理が自動的に処理されます。だから、いったんオブジェクトが不要になったら(すぐに参照が残っていない)、すぐにfree'dになるのではなく、メモリに残ります。 JVMの設定、最大ヒープサイズなどのいくつかの要素に応じて、ガベージコレクションでは不要なオブジェクトがキックインされ、削除されます。これはフレームごとに発生するわけではないので、メモリ使用量が増加しているのを確認してから、ガベージコレクションが発生すると突然低下します。

1

ごみをたくさん作成すると、毎秒500MB以上のものが生成されていることがわかります。

メモリプロファイラを使用するとメモリ消費量を減らすことができ、実行中のプログラムでは1分あたり1 MB未満に低下する可能性があります。

+0

しかし、 'Basic game tutorial'というコードを実行すると、大量のリークがないことを保証する必要があります:/ – Ilion

+0

ガーベッジの作成はメモリリーク(復元できないメモリ)と同じではありません –