既然 Java 的垃圾回收机制能够自动的回收内存,怎么还会出现内存泄漏的情况呢
小伙看你根骨奇佳,潜力无限,来学PHP伐。
メモリ リソースは限られています。ガベージ コレクションは、プログラムの実行に役立つ「ガベージ」のみをリサイクルします。
メモリ オーバーフローには 2 つの状況があります。1 つは無限再帰の呼び出しなどのスタック オーバーフローです。ヒープ オーバーフローもあります。つまり、new から出てくるオブジェクトはすぐには破棄されず、常に new になります。
不適切に書かれたプログラムの中には、GC メカニズムが有効になる前に無限にオブジェクトを作成するものがあるからです。
一般的に言えば、Java におけるメモリ リークとは、プログラムで不要になった割り当てられたメモリを再利用できないという事実を指します。 ガベージ コレクション メカニズムは、オブジェクトとルート オブジェクトの到達可能性によってメモリをリサイクルできるかどうかを決定します。ただし、プログラミング エラーやその他の理由により、期限切れのオブジェクト参照が依然として保持されており、ガベージ コレクターは関連する領域を再利用できません。
マンホールを占拠してうんちをしなければ、彼にできることは何もありません。私の同僚が書いたブログを読むことをお勧めします: http://blog.csdn.net/zhanggan...
一部のオブジェクトは実際には不要ですが、常に参照され、リサイクルできません
今のところ、人が作ったものは人そのものを超えることはできません。Java の GC アルゴリズムは人によって書かれていますが、命をかけて GC で再利用できないコードを書く人もいるでしょう。
これは中国那么大,为什么还有人在朝阳区懵逼と同じです。
中国那么大,为什么还有人在朝阳区懵逼
私自身の理解なので、間違っていたらご指摘ください。 JDK6 では、String のメソッドは subString と呼ばれ、部分文字列を生成するために使用されます。生成を高速化するために、String にはコンストラクター String(int offset, int count, char value[]) {
}は元の String 配列を直接指します。定数プール内の新しい String 文字列が毎回生成されることは誰もが知っています。ただし、この参照により、元の文字列はリサイクルされなくなります。 subString の値が彼を指すためです。これによりメモリリークが発生します。
JVM は、プログラマからの干渉をあまり受けずに単独で GC を実行しますが、一部の誤った操作により、使用する必要のなくなった一部のオブジェクトが参照を保持しており、メモリ リークが発生します。
JVM: プログラマーはゴミを保持しており、それが私にとって非常に恥ずかしいことです。
メモリ リソースは限られています。ガベージ コレクションは、プログラムの実行に役立つ「ガベージ」のみをリサイクルします。
メモリ オーバーフローには 2 つの状況があります。1 つは無限再帰の呼び出しなどのスタック オーバーフローです。ヒープ オーバーフローもあります。つまり、new から出てくるオブジェクトはすぐには破棄されず、常に new になります。
不適切に書かれたプログラムの中には、GC メカニズムが有効になる前に無限にオブジェクトを作成するものがあるからです。
一般的に言えば、Java におけるメモリ リークとは、プログラムで不要になった割り当てられたメモリを再利用できないという事実を指します。
ガベージ コレクション メカニズムは、オブジェクトとルート オブジェクトの到達可能性によってメモリをリサイクルできるかどうかを決定します。ただし、プログラミング エラーやその他の理由により、期限切れのオブジェクト参照が依然として保持されており、ガベージ コレクターは関連する領域を再利用できません。
マンホールを占拠してうんちをしなければ、彼にできることは何もありません。
私の同僚が書いたブログを読むことをお勧めします: http://blog.csdn.net/zhanggan...
一部のオブジェクトは実際には不要ですが、常に参照され、リサイクルできません
今のところ、人が作ったものは人そのものを超えることはできません。Java の GC アルゴリズムは人によって書かれていますが、命をかけて GC で再利用できないコードを書く人もいるでしょう。
これは
中国那么大,为什么还有人在朝阳区懵逼
と同じです。私自身の理解なので、間違っていたらご指摘ください。
リーリーJDK6 では、String のメソッドは subString と呼ばれ、部分文字列を生成するために使用されます。生成を高速化するために、String にはコンストラクター
String(int offset, int count, char value[]) {
}
は元の String 配列を直接指します。定数プール内の新しい String 文字列が毎回生成されることは誰もが知っています。ただし、この参照により、元の文字列はリサイクルされなくなります。 subString の値が彼を指すためです。これによりメモリリークが発生します。
JVM は、プログラマからの干渉をあまり受けずに単独で GC を実行しますが、一部の誤った操作により、使用する必要のなくなった一部のオブジェクトが参照を保持しており、メモリ リークが発生します。
JVM: プログラマーはゴミを保持しており、それが私にとって非常に恥ずかしいことです。