2

私は MyClass の arry を持っています

MyClass[] data;

設定長さ:

data = new MyClass[1];

データの追加:

data[0] = new MyClass();

ここで、配列をクリアする必要があります。これを行う最善の方法は何ですか?その配列にnullを割り当てても大丈夫ですか?

data=null;
4

5 に答える 5

7

配列をまだ存在させたいが、何も入れないようにしますか? アレイを再初期化します。

data = new MyClass[1];

JVM が必要なときにガベージを収集できるように、配列が存在しないようにしますか? あとdata=null;はおっしゃる通り。

同じ配列への参照が複数あり、すべての要素を削除したい場合:

Arrays.fill(data, null);
于 2013-09-13T13:17:03.753 に答える
5

私はあなたが何を期待しているのかわかりません.一般に、Javaには自動ガベージコレクションがあります。

Arrays.fill(myArray, null);
于 2013-09-13T13:20:56.237 に答える
1

基本的にJavaでは必要ありません。自動ガベージコレクションがあります。

Factoriesそのストアの静的データを使用する場合nullは、将来の追加の使用を防ぐために設定する必要がある場合があります

ただし、他の方法を探している場合は、次を試すことができます。

List<MyClass> data = new ArrayList<MyClass>(1);
data.add(new MyClass());
data.clear();
于 2013-09-13T13:16:50.063 に答える
0

はい、使用できます= null。物事を処理します。

データを指す変数がなくなると、ガベージコレクターがそれを収集し、すべてがうまくいきます:)

于 2013-09-13T13:17:43.073 に答える
0

それは、ガベージコレクターがそれをどのように処理するかにかかっています。次の 2 つのことを行うことができますが、動作とセマンティックはわずかに異なります。

data[0] = null;

これは、MyClass への参照の 1 つのサイズのリストを含むメモリ領域をデータが引き続き参照し続けることを意味します。この場合のみ、MyClass への参照は null です。ガベージ コレクターは、以前に割り当てられた MyClass のインスタンスを収集します。

data = null;

ただし、上記のメモリ領域を完全に削除し、ガベージ コレクターは参照のリストと MyClass インスタンスの両方を収集します。したがって、メモリの観点から、同じ参照配列を実際に使用する予定がない場合は、2 番目のオプションが最も効果的です。

于 2013-09-13T13:24:29.070 に答える