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

既然 Java 的垃圾回收机制能够自动的回收内存,怎么还会出现内存泄漏的情况呢

既然 Java 的垃圾回收机制能够自动的回收内存,怎么还会出现内存泄漏的情况呢

伊谢尔伦伊谢尔伦2763日前811

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

  • PHP中文网

    PHP中文网2017-04-18 10:51:43

    メモリ リソースは限られています。ガベージ コレクションは、プログラムの実行に役立つ「ガベージ」のみをリサイクルします。

    返事
    0
  • 高洛峰

    高洛峰2017-04-18 10:51:43

    メモリ オーバーフローには 2 つの状況があります。1 つは無限再帰の呼び出しなどのスタック オーバーフローです。ヒープ オーバーフローもあります。つまり、new から出てくるオブジェクトはすぐには破棄されず、常に new になります。

    返事
    0
  • 黄舟

    黄舟2017-04-18 10:51:43

    不適切に書かれたプログラムの中には、GC メカニズムが有効になる前に無限にオブジェクトを作成するものがあるからです。

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:51:43

    一般的に言えば、Java におけるメモリ リークとは、プログラムで不要になった割り当てられたメモリを再利用できないという事実を指します。
    ガベージ コレクション メカニズムは、オブジェクトとルート オブジェクトの到達可能性によってメモリをリサイクルできるかどうかを決定します。ただし、プログラミング エラーやその他の理由により、期限切れのオブジェクト参照が依然として保持されており、ガベージ コレクターは関連する領域を再利用できません。

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:51:43

    マンホールを占拠してうんちをしなければ、彼にできることは何もありません。
    私の同僚が書いたブログを読むことをお勧めします: http://blog.csdn.net/zhanggan...

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:51:43

    一部のオブジェクトは実際には不要ですが、常に参照され、リサイクルできません

    返事
    0
  • PHPz

    PHPz2017-04-18 10:51:43

    今のところ、人が作ったものは人そのものを超えることはできません。Java の GC アルゴリズムは人によって書かれていますが、命をかけて GC で再利用できないコードを書く人もいるでしょう。

    返事
    0
  • 高洛峰

    高洛峰2017-04-18 10:51:43

    これは中国那么大,为什么还有人在朝阳区懵逼と同じです。

    返事
    0
  • PHPz

    PHPz2017-04-18 10:51:43

    私自身の理解なので、間違っていたらご指摘ください。
    JDK6 では、String のメソッドは subString と呼ばれ、部分文字列を生成するために使用されます。生成を高速化するために、String にはコンストラクター
    String(int offset, int count, char value[]) {

    リーリー

    }
    は元の String 配列を直接指します。定数プール内の新しい String 文字列が毎回生成されることは誰もが知っています。ただし、この参照により、元の文字列はリサイクルされなくなります。 subString の値が彼を指すためです。これによりメモリリークが発生します。

    JVM は、プログラマからの干渉をあまり受けずに単独で GC を実行しますが、一部の誤った操作により、使用する必要のなくなった一部のオブジェクトが参照を保持しており、メモリ リークが発生します。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 10:51:43

    JVM: プログラマーはゴミを保持しており、それが私にとって非常に恥ずかしいことです。

    返事
    0
  • キャンセル返事