私は最近、Java オブジェクトによって占有されているメモリを解放することを検討していました。そうしているうちに、Javaでオブジェクトがどのようにコピーされるか(浅い/深い)、およびオブジェクトがまだ使用されているときに誤ってオブジェクトをクリア/無効にするのを避ける方法について混乱しました。
次のシナリオを検討してください。
ArrayList<Object>
aを引数としてメソッドに渡します。ArrayList<Object>
スレッドによって処理される実行可能なクラスに aを渡します。- を に入れ
ArrayList<Object>
ますHashMap
。
これらの場合、list = null;
またはを呼び出すlist.clear();
と、オブジェクトはどうなりますか? どの場合にオブジェクトが失われ、どの場合に参照のみが null に設定されますか?
オブジェクトの浅いコピーと深いコピーに関係していると思いますが、どの場合に浅いコピーが発生し、どの場合にJavaで深いコピーが発生しますか?