ガベージ コレクション - Java でオブジェクトを手動で収集する方法
为情所困
为情所困 2017-05-17 10:05:31
0
5
1039

まずコードから始めましょう。私の目標はデータを完全に消すことです

リーリー

Java のガベージ コレクションの仕組みは知っています。何かがそれを参照している限り、それは消えません。上記のコードは通常どおり 10 を出力できます。
しかし、次の方法を知りたいです。 System.out.println(new1.num);null 例外をスローします。つまり、そのようなデータはまったくありません。
letnew1=null だけとは言わないでください。

为情所困
为情所困

全員に返信(5)
迷茫

あなたは自分で言いました、「私は Java のガベージ コレクション メカニズムを知っています。何かがそれを参照している限り、それは消えません。」 変数 "new1" はヒープ内の "new Data()" のメモリを参照し続けています。 、作成するコードがすべて null ポインター例外にならないように、リサイクルを許可するにはどうすればよいでしょうか。強参照の代わりに WeakReference を使用できます。

リーリー
いいねを押す +0
我想大声告诉你

リーリー

JVM が gc を実行することをお勧めしますが、これは完全に拒否される可能性があります。 GC 自体は定期的に自動的に実行され、JVM が実行のタイミングを決定します。さらに、現在のバージョンにはさまざまなよりスマートなモードがあり、実行されているマシンに基づいて自動的に選択されます。確かにパフォーマンスが向上します。必要に応じて、このコマンドを使用してパフォーマンスを最適化する代わりに、GC 動作メカニズムも微調整する必要があります。

いいねを押す +0
Ty80

オブジェクト参照があり、削除されようとしているオブジェクトは、引き続き null に設定できます

リーリー
いいねを押す +0
左手右手慢动作

JMM の原理を理解する前に、System.gc() をむやみに使用しないでください。オブジェクトが使い果たされたときにのみ obj=null を使用してください。

いいねを押す +0
滿天的星座

答えは「いいえ」です。これは、JVM 仕様では未定義の動作です。開発者は、仮想マシンによるオブジェクトのリサイクルを手動で支援しようとしてはなりません。 SunのJDKだと安全でないパッケージがあるようですが、使ったことがないのでそのようなAPIがあるのか​​分かりません。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート