1

2400x1800のバッファリングされた画像(多くのリソースを必要とすることはわかっています)を使用するアプリがありますが、90%以上の時間で完全に機能します。130 mbのRAMを使用し、CPUの5%を使用します。

問題は、10%の時間、大きなラグがあり、40〜50 mbのRAMしか消費せず、CPUの50%を使用することです。なぜ同じ記憶を食べなかったのですか?

コードを投稿する必要があることはわかっていますが、アプリは非常に大きいので、この特定の問題について少し話す可能性のあるものへのリンクが非常に役立ちます。

4

5 に答える 5

0

プロファイラーを介して実行します。JProfilerは使用するのに適しています。

于 2011-05-02T13:45:58.440 に答える
0

ワンショットで画像を読み込んでいますか?それを並べて表示し、画像をロードするスレッドを作成してみませんか?ビューをロードするプログラムの部分が非常に大きい場合は、スレッドに広げてみませんか?さらにアドバイスが必要ですか?

幸運を

于 2011-05-02T13:47:10.723 に答える
0

まず、2400x1800の画像の場合でも、130Mbは大量です。これは、ピクセルあたり27バイトを消費することを意味します。

従来の32ビット/ピクセル(または4バイト)の画像の場合、必要なのは16〜17MBだけです。

あなたが言ったことから第二に、ガベージコレクターが呼び出され、メモリを解放するために多くの作業を行うまで、あなたはますます多くのメモリを消費しているようです。

次のことを行う必要があります。-使用可能な最大メモリを増やす-ガベージコレクタを微調整して、一時停止を短くしますが、より頻繁にします。

編集:多分あなたはそれらを更新する代わりにこのサイズのたくさんの新しいイメージを作成し、たくさんのメモリ割り当てとメモリの割り当て解除を強制しますか?

于 2011-05-02T13:51:54.403 に答える
0

質問から先に進むことはほとんどありませんが、アプリケーションの定期的な速度低下は、多くの場合、ガベージコレクションが原因です。jvisualvmを実行し、メモリに関連するグラフを確認します。パフォーマンスの低下の開始と一致するピークを持つ鋸歯状のパターンが表示された場合、これは、ガベージコレクターが大量のオブジェクトを処理しているためにアプリの速度が低下していることを示しています。これは、コード内のオブジェクトの無駄な作成が原因である可能性があります。または、単にvmにより多くのメモリを割り当てる必要がある場合があります。

これがへのガイドです

于 2011-05-02T13:54:13.637 に答える
0

Xmx(これは使用するアプリケーションで使用可能な最大サイズです)やXss(これはそのアプリケーションの開始メモリです)などのJVMパラメータを実行すると役立つ場合があります。

あなたの日食でこれを試してください(あなたがそれを使うと仮定して)

RUNメニューに移動し、

次に、構成を実行します。

次に、ランナーを選択します。

(x)=引数タブをクリックします。

これをVM引数に追加します

-Xmx512m -Xss150m

実行してみてください...これにより、JVMは少なくとも150MBの空きRAMがすでに割り当てられた状態で起動します...

Eclipseを使用しない場合は、これらのパラメーターをJavaコマンドラインに追加するだけです。

于 2011-05-02T14:11:07.603 に答える