3

オブジェクトをメモリから削除するために何か他のことをする必要がありますかArrayListArrayList.remove(object)私はこのリストからオブジェクトをかなり速いペースで追加および削除しているので、オブジェクトがメモリから削除されない場合、スペースを占有し始め、ゲームの速度が低下し始めます。

4

5 に答える 5

5

-を呼び出すときは、オブジェクトをメモリArrayList.remove(object)からではなくから削除するだけです。List

-Garbage Collectorオブジェクトをヒープから削除するタイミングを決定するかどうかに依存します。通常の状況では、オブジェクトへの参照がなくなったため、オブジェクトはガベージコレクションの準備ができています。

-JavaStringのオブジェクトがパスワードの保存に使用されるべきではなく、代わりに使用されるべきである理由の典型的な例がありますchar[]

このリンクを参照してください...

パスワードに文字列よりもchar[]が優先されるのはなぜですか?

于 2012-12-24T02:38:28.703 に答える
1

Javaは自動ガベージコレクションを行います。したがって、オブジェクトが参照されなくなったら、オブジェクトを削除できます。これは、オブジェクトが削除されることを意味するわけではありません。ガベージコレクションは自動的に実行されます。System.gc()を呼び出すことで実行を要求できますが、これは実行するための単なる推測です。

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#gc%28%29

于 2012-12-24T02:37:40.523 に答える
1

いいえ、オブジェクトを参照しているのがそれだけである限り、他に何もする必要はありません。ガベージコレクションされた言語の喜びへようこそ!Javaは、メモリを再利用する必要があると判断したときに、参照されていない古いオブジェクトをクリーンアップします。

于 2012-12-24T02:37:43.790 に答える
1

ヒープを十分に速く噛むと、いくつかのjvm引数と一緒にgcを微調整できます... 1日に数十億の操作を処理するアプリがあり、 人間工学に基づいたgc設定で大幅に調整しています。アダプティブサイズポリシー、および主に最大一時停止設定を使用します。しばらくの間(数分)通常どおりにアレイリストを実行するプロファイラーを使用してプログラムを実行し、さまざまなヒープ世代の周囲の状態がどのように見えるかを確認します。世代へのメモリ割り当ても微調整する必要があるかもしれません。

于 2012-12-24T04:04:49.477 に答える
0

ArrayList.removeはそのオブジェクトを配列から削除し、そのオブジェクトが他のオブジェクトから参照されていない場合、GCはそのオブジェクトを削除します。

于 2012-12-24T02:38:58.097 に答える