int dom[][] = new int[28][3];
別の配列に移動する配列があります。そのアレイのスペースを解放するにはどうすればよいですか?androidエミュレーターで実行しているときに高いCPU警告が表示されます。
4 に答える
Javaでは、配列を手動で解放する必要はありません。ガベージコレクターがメモリをクリアします。オブジェクトをnullに設定するだけですdom = null
。
CPU警告にはこれには何もありません。Androidエミュレーターは起動時にCPUを集中的に使用する操作があるため、エミュレーターが起動するまで、プロセッサーは100%になります。
dom を null に設定します。次のガベージ コレクタが実行されたときに解放されるようにします。
何もする必要はありません。参照がないために配列に到達できなくなった場合は、ガベージ コレクションが行われます (参照を null に設定しても違いはありません)。
通常、これがローカル変数であり、宣言されているメソッドから返さない場合、メソッドが終了するとすぐに (つまり、配列がスコープ外になるとすぐに) GC の対象になります。
また、「高 CPU 警告が表示される」場合、問題はメモリではなく CPU にあります。
androidエミュレーターの実行中に高いCPU警告が表示されますか?
それは何でもかまいません。ただし、少し前にスペースを解放するために、明示的なSystem.gc()
呼び出しをいくつか追加したと思います。
そうしないでください!
仮想マシンは通常、収集する可能性のあるガベージがたくさんあることを認識しています...そしてそれがGCを実行するのに最適な時間です。また、JVMがOOMEを使用してベイルアウトすることを決定すると、GCがすぐに実行されることを保証できます。
自分自身を呼び出すSystem.gc()
と、VMがCPUサイクルを浪費して、ほとんど役に立たない可能性があります。
ほとんどの場合、最善の戦略は、VMに必要に応じてGCをスケジュールさせることです。参照をヌルにすることは役に立ちますが、通常は不要です。(率直に言って、整数の28x3配列はスペースをほとんど必要とせず、おそらくnullにする価値はありません。)