検索

ホームページ  >  に質問  >  本文

ガベージ コレクション - Java でオブジェクトを手動で収集する方法

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

リーリー

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

为情所困为情所困2750日前1047

全員に返信(5)返信します

  • 迷茫

    迷茫2017-05-17 10:07:31

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

    リーリー

    返事
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-17 10:07:31

    リーリー

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

    返事
    0
  • PHP中文网

    PHP中文网2017-05-17 10:07:31

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

    リーリー

    返事
    0
  • ringa_lee

    ringa_lee2017-05-17 10:07:31

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

    返事
    0
  • 滿天的星座

    滿天的星座2017-05-17 10:07:31

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

    返事
    0
  • キャンセル返事