オブジェクトをメモリから削除するために何か他のことをする必要がありますかArrayList
?ArrayList.remove(object)
私はこのリストからオブジェクトをかなり速いペースで追加および削除しているので、オブジェクトがメモリから削除されない場合、スペースを占有し始め、ゲームの速度が低下し始めます。
5 に答える
-を呼び出すときは、オブジェクトをメモリArrayList.remove(object)
からではなくから削除するだけです。List
-Garbage Collector
オブジェクトをヒープから削除するタイミングを決定するかどうかに依存します。通常の状況では、オブジェクトへの参照がなくなったため、オブジェクトはガベージコレクションの準備ができています。
-JavaString
のオブジェクトがパスワードの保存に使用されるべきではなく、代わりに使用されるべきである理由の典型的な例がありますchar[]
。
このリンクを参照してください...
Javaは自動ガベージコレクションを行います。したがって、オブジェクトが参照されなくなったら、オブジェクトを削除できます。これは、オブジェクトが削除されることを意味するわけではありません。ガベージコレクションは自動的に実行されます。System.gc()を呼び出すことで実行を要求できますが、これは実行するための単なる推測です。
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#gc%28%29
いいえ、オブジェクトを参照しているのがそれだけである限り、他に何もする必要はありません。ガベージコレクションされた言語の喜びへようこそ!Javaは、メモリを再利用する必要があると判断したときに、参照されていない古いオブジェクトをクリーンアップします。
ヒープを十分に速く噛むと、いくつかのjvm引数と一緒にgcを微調整できます... 1日に数十億の操作を処理するアプリがあり、 人間工学に基づいたgc設定で大幅に調整しています。アダプティブサイズポリシー、および主に最大一時停止設定を使用します。しばらくの間(数分)通常どおりにアレイリストを実行するプロファイラーを使用してプログラムを実行し、さまざまなヒープ世代の周囲の状態がどのように見えるかを確認します。世代へのメモリ割り当ても微調整する必要があるかもしれません。
ArrayList.removeはそのオブジェクトを配列から削除し、そのオブジェクトが他のオブジェクトから参照されていない場合、GCはそのオブジェクトを削除します。