1

実際、答えが見つからない簡単な質問があります。

私は、Android/Java アプリケーションが消費する RAM の量をできるだけ少なくすることに非常に固執しています。これは、ユーザー エクスペリエンスに役立つからです。

そうは言っても、私の質問はフィールド変数とガベージコレクターに焦点を当てています。

アプリケーションが起動し、設定されたフィールド変数 (ハードコード) のリストが表示されます。読みやすくするために、フィールド変数を選択しました。すぐに変更したい場合は、コードを調べて変数が実際にいつ使用されるかを確認する代わりに、値を変更します。

この場合のフィールド変数は、アプリケーションが初めてロードされるときに一度だけ使用されます。

ガベージ コレクターはこの変数を削除しますか、それとも手動で null に設定する必要がありますか。単純な int 値が大したことではないことはわかっていますが、ガベージ コレクターについては興味があります。

フィールドを含むオブジェクトは常に使用されます (この場合は Android ViewPagerAdapter になります)。

4

2 に答える 2

2

フィールド変数は強い参照です。その限りクラス オブジェクトが周囲にある場合、フィールド変数は引き続きアクセス可能でなければなりません。それらを1つのメソッドでのみ使用している場合は、そのメソッドの実行の範囲内にのみ保持する方が(わずかに、わずかに)効率的です。

于 2013-10-22T00:50:59.663 に答える
0

一般に、フィールドを明示的に null に設定する必要はありませんが、パフォーマンス/メモリが本当に心配な場合は、フィールドの作成を避けて、代わりにローカル変数を使用してください。つまり、可能であればフィールドをローカル変数に変換してメソッドに変換し、一度しか使用されない場合は不要なフィールドを作成しないでください。 .

アプリのパフォーマンスを改善するには、Android のベスト プラクティスに関するドキュメントを参照してください。

  1. http://developer.android.com/training/best-performance.html
  2. http://developer.android.com/training/articles/perf-tips.html
于 2013-10-22T01:05:29.527 に答える